表名为Order
。 OrderID
是它的列名。每次运行它都会得到异常
" There was an error parsing the query. [ Token line number = 1,Token line offset = 13,
Token in error = Order ]"
请帮帮我。谢谢。列名与代码给出的类似。
Int32 Product_ID = Convert.ToInt32(TxtProductId.Text);
Int64 Order_ID = Convert.ToInt32(TxtOrderNo.Text);
Int64 MoneyLeft = new int();
Int64 MoneyGiven = Convert.ToInt32(TxtAdvance.Text);
Int64 TotalMoney = Convert.ToInt32(LblTotalPrice.Text);
//Calculate Money left
MoneyLeft=TotalMoney-MoneyGiven;
string query = "INSERT INTO ORDER
(
OrderId,
OrderName,
OrderItemNo,
OrderQuantity,
OrderMoneyLeft,
OrderMoneyGiven,
OrderTotalMoney
)
VALUES
(
@val1,
@val2,
@val3,
@val4,
@val5,
@val6,
@val7
)";
Command.Connection = SQLConnection;
Command.CommandText = query;
Command.Parameters.Clear();
Command.Parameters.AddWithValue("@val1", Order_ID);
Command.Parameters.AddWithValue("@val2", TxtCustomerName.Text);
Command.Parameters.AddWithValue("@val3", Product_ID);
Command.Parameters.AddWithValue("@val4", TxtItemQuantity.Text.ToString());
Command.Parameters.AddWithValue("@val5", MoneyLeft);
Command.Parameters.AddWithValue("@val6",MoneyGiven);
Command.Parameters.AddWithValue("@val7", TotalMoney);
Command.ExecuteNonQuery();
答案 0 :(得分:0)
我看到的第一件事是,ORDER
是T-SQL中的reserved keyword。您应该使用方括号(如[ORDER]
)。最佳解决方案是将表名更改为非保留字。
但是在这种情况下,我很惊讶您没有在<。em>类型的错误附近获得不正确的语法。
除此之外,我们需要知道您的列类型是什么以及您的参数值是什么。我强烈怀疑OrderQuantity
列。根据它的名称,它听起来像一个数字类型的列。但是你传递了一个字符串作为参数。
并且不要使用AddWithValue
方法。它可能会产生意外的结果。使用.Add()
method及其超载。不要忘记使用using
statement来处理您的SQLConnection
和SqlCommand
。