[英].net, MS Access, Syntax error in INSERT INTO statement
異常詳細信息:System.Data.OleDb.OleDbbException:INSERT INTO語句中的語法錯誤。
源錯誤:
第168行:comm.Parameters.Add(param);
第169行:
第170行:int totalCount = comm.ExecuteNonQuery();
第171行:conn.Close();
第172行:
當代碼運行以下方法時,我不斷收到錯誤消息“ INSERT INTO語句中的語法錯誤”:
protected void makeOrder()
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["onlineStoreConnString"].ConnectionString;
conn.Open();
OleDbCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO Order (UserID, ProductID, OrderDate, ProductQty, IsCart) VALUES(?, ?, ?, ?, ?)";
OleDbParameter param;
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = Int32.Parse(Session["LoggedInId"].ToString());
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = Int32.Parse(Request.QueryString["id"].ToString());
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = DateTime.Now.ToString();
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = Int32.Parse(txtQty.Text);
comm.Parameters.Add(param);
param = comm.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = true;
comm.Parameters.Add(param);
int totalCount = comm.ExecuteNonQuery();
conn.Close();
}
數據庫為MS Access,屬性的數據類型為UserID:Number,
產品編號:
OrderDate:長文本,
產品數量:數量
IsCart:是/否
我一直堅持這個錯誤幾個小時,有什么可以幫助我找到它的嗎? 謝謝。
Order
很可能是數據庫引擎中的保留字,因為它是SQL查詢中的關鍵字。 您需要將標識符括起來以防止將其誤認為關鍵字。 根據您的數據庫引擎,可能是這樣的:
INSERT INTO [Order] (UserID, ProductID, OrderDate, ProductQty, IsCart) VALUES(?, ?, ?, ?, ?)
或這個:
INSERT INTO `Order` (UserID, ProductID, OrderDate, ProductQty, IsCart) VALUES(?, ?, ?, ?, ?)
甚至其他內容(同樣,取決於您的數據庫)。
從技術上講,出於多種原因,您可以(甚至可能想要)封裝所有標識符:
INSERT INTO [Order] ([UserID], [ProductID], [OrderDate], [ProductQty], [IsCart]) VALUES(?, ?, ?, ?, ?)
這可能是為了保持一致性,防止進一步的歧義(不太可能,但可能),甚至是查詢解析中的性能略有改善(對於大批量情況而言,這可能很重要)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.