C# 2010 e MS Access 2010: Errore di Sintassi su Update

martedì 04 gennaio 2011 - 09.49
Tag Elenco Tags  C#  |  Windows 7  |  Visual Studio Express  |  Access (.mdb)  |  Office 2010

Piumy83 Profilo | Newbie

Ciao a tutti!

Ho un problema con un codice C# col quale costruisco una query di Update in modo parametrico e successivamente la eseguo.

Il codice è quello che allego:

string dbQuery = "";

// -->> IMPOSTAZIONE QUERY <<--
switch (db_Action)
{
case "UPD":
dbQuery = "UPDATE " + dbTable + " SET " + dbFields + " ";
dbQuery += "WHERE " + dbCondition;
break;
}

OleDbConnection Conn = new OleDbConnection(Globals.ConnectionString);

// -->> Esecuzione Query <<--
try
{
Conn.Open();

OleDbCommand Cmd = new OleDbCommand(dbQuery, Conn);
Cmd.ExecuteNonQuery();

Conn.Close();
}
catch (Exception ex)
{
Conn.Close();
}

Debuggando il codice, la stringa di update che viene composta funziona correttamente se eseguita su Access, ma da C# mi restituisce l'errore "Errore di Sintassi nell'istruzione Update".
La cosa strana è che questo codice viene richiamato anche da un'altra parte del programma e funziona correttamente eseguendo la query.
Sto impazzendo!!!

Aggiornamento: Ho notato che la query (UPDATE tb_user SET password = '111111' WHERE username = 'PIPPO') non funziona proprio nel caso in cui tento di aggiornare un campo di tipo Text... Why??? Dove sto sbagliando ?

Piumy83 - Micky

freeteo Profilo | Guru

Ciao,
ricordo uno spiacevole comportamento pre alcuni campi con dei nomi chiave, come ad esempio "password" e "note", riesci a provare velocemente a cambiare il nome del campo, magari in "pwd" per capire se è quello il problema?

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Piumy83 Profilo | Newbie

Avevi ragione!
Grazie mille, non ci avrei proprio pensato!
Piumy83 - Micky

freeteo Profilo | Guru

La cosa è fastidiosa, ma è così purtroppo.
Altra cosa che non ho provato è mettere tra parentesi quadre il nome del campo quando fai le query "...[password]..." in sql è buona norma ed obbligatorio se hai campi con lo spazio, in Access non ricordo esattamente ma appunto sarebbe da provare...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Piumy83 Profilo | Newbie

Avevo provato a mettere le parentesi quadre (Come avviene per la INSERT), ma mi restituiva errore comunque... da ora in poi terrò a mente questo inghippo delle "parole chiave"
Piumy83 - Micky
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5