2014-01-09 66 views
1

這是我的代碼,我在我的INSERT statement用於獲取語法錯誤:C#語法錯誤 - INSERT INTO語句。訪問數據庫。

string strSql = "INSERT INTO Responses (OCR, DeadlineDate, OCR Title) VALUES ('"+textBox5.Text+"','"+textBox7.Text+"', '"+textBox6.Text+"')"; 

OleDbConnection newConn = new OleDbConnection(strProvider); 
OleDbCommand dbCmd = new OleDbCommand(strSql, newConn); 

newConn.Open(); 
dbCmd.ExecuteNonQuery(); 

什麼想法?

+2

避免目前的注入漏洞; http://stackoverflow.com/questions/5893837/using-parameters-inserting-data-into-access-database –

回答

9

列名OCR Title是無效的,你要逃避它使用[][OCR Title]

INSERT INTO Responses (OCR, DeadlineDate, [OCR Title]) VALUES(... 

另外,請儘量使用而不將值參數化查詢:

string strSql = "INSERT INTO Responses (OCR, DeadlineDate, [OCR Title]) VALUES (?, ?, ?)"; 

using (OleDbConnection newConn = new OleDbConnection(strProvider)) 
{ 
    using (OleDbCommand dbCmd = new OleDbCommand(strSql, newConn)) 
    { 
    dbCmd.CommandType = CommandType.Text; 
    dbCmd.Parameters.AddWithValue("OCR", textBox5.Text); 
    dbCmd.Parameters.AddWithValue("DeadlineDate", textBox7.Text); 
    dbCmd.Parameters.AddWithValue("[OCR Title]", textBox6.Text); 
    newConn .Open(); 
    dbCmd.ExecuteNonQuery(); 
    } 
} 
+0

當升級到一個新的數據庫版本時,總是在列名稱周圍放置括號。 OCR成爲關鍵字。 – Silvermind

0

我猜語法錯誤與c#無關,但與SQL語句無關。

也許你需要對「OCR標題」表名稱的textBoxes值和文本限定符進行轉義。