2013-02-07 73 views
0

我在c#中爲INSERT寫入mdb文件的字符串,但在代碼中捕獲錯誤「insert in statment中的語法錯誤」。
我直接在Microsoft Access 2007中測試字符串,查詢插入時沒有錯誤。插入到mdb中的語法錯誤

string qu = "INSERT INTO Reports (docid, biopsy, normal, section, subsection, title, items, [text]) VALUES (21, False, False, 'Recommendation', 'a', 'Injection', 'a', 'a');"; 
OleDbCommand cmd = new OleDbCommand(); 
OleDbDataAdapter da = new OleDbDataAdapter(); 
DataSet ds = new DataSet(); 
OleDbConnection con = Model.getDataConnection(); 

cmd.Connection = con; 
cmd.CommandText = qu; 
con.Open(); 
try 
{ 
    cmd.ExecuteNonQuery(); 
} 
catch (Exception ex) 
{ 
    System.Windows.Forms.MessageBox.Show("data error!\n" + ex.Message); 
    return false; 
} 

原來的字符串顯示正確的包圍,前一個不幸的編輯。

string qu = "INSERT INTO Reports (docid, biopsy, normal, [section], subsection, title, items, [text]) VALUES (21, False, False, 'Recommendation', '', 'Injection', '', '');"; 
+0

我認爲問題是「空」字符。 char不能爲空,但具有固定大小。嘗試使用空字符串或'\ 0'作爲空字符。 –

+0

我使用''和NULL但沒有回答! – mrash

+0

不要使用''或NULL。使用\「\」(即「」)或'\ 0',這是char值null,不是對象。 –

回答

0

報告部分文本都是reserved words。用括號將它們括在你的SQL語句中。

INSERT INTO [Reports] (
    docid, biopsy, normal, [section], subsection, title, items, [text]) 
VALUES (
    21, False, False, 'Recommendation', 'a', 'Injection', 'a', 'a'); 
+1

你被錯誤的編輯誤導了。請注意,有兩個人測試了這個查詢。 – Fionnuala

+0

非常感謝你!約翰威廉姆斯和雷蒙! – mrash