2016-05-08 91 views
2

我有一個由OleDb查詢編輯的Access 2000(* .mdb)文件。查詢問題(OleDb)

此刻,我想UPDATE表成只有兩列的數據庫,你可以在圖片中看到下面

enter image description here

該數據庫的每一列String

此代碼,thows一個OleDbException

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); 
    con.Open(); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 
} 

這似乎很簡單,我知道,但我無法找到解決方案。
謝謝。

+1

這怎麼可能呢?這是一個錯字,你會在第四行結束時錯過**:'string strSql =「UPDATE OPTIONS SET VAL ='C:\\ Edo \\ Desktop \\ Logo.png'WHERE IMP =' LogoPath';' –

+0

對不起,我忘了把它放在這個問題! –

+0

@ PhamX.Bach我在想同樣的事情。即使這個例外是缺少一個'實際的代碼不會編譯,如果缺少',所以也許它是一個'丟失'而不是 –

回答

2

答案並不像我們最初想象的那麼明顯,但我認爲我發現它: IMP is a reserved keyword in Access SQL(或更可能:操作員)。奇怪的是it doesn't show up in the JET documentation

所以,你需要確保數據庫引擎知道這是一個列名與[]逃避你的名字科拉姆:

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

我真的不知道該如何謝謝你。 完美而詳細的答案。 –