Edoardo Chiabra Edoardo Chiabra - 2 years ago 291
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'
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download