Edoardo Chiabra Edoardo Chiabra - 1 year ago 198
SQL Question

C# - UPDATE SET WHERE Query issues (OleDb)

I have a Access 2000 (*.mdb) file which is edited by OleDb Queries.

At the moment I would like to

a table into a database which has only two columns as you can see in the picture below

enter image description here

Every column of this database is of type

This code, thows an

OleDbConnection con;
OleDbCommand cmd;

private void UpdateExistingRow()
string strProvider = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + path + ";"
string strSql = "UPDATE OPTIONS SET VAL='C:\\Edo\\Desktop\\Logo.png' WHERE IMP='LogoPath'";
con = new OleDbConnection(strProvider);
cmd = new OleDbCommand(strSql, con);

It seems simple, I know, but I'm not able to find a solution.

Thank You.

Answer Source

The answer was not as obvious as we initially thought, but I think I found it: IMP is a reserved keyword in Access SQL (or more likely: an operator). Strangely though it doesn't show up in the JET documentation.

So you need to make sure the DB Engine knows it's a column name by escaping your colum names with []:

UPDATE [OPTIONS] SET VAL='C:\\Edo\\Desktop\\Logo.png' WHERE [IMP] = 'LogoPath'