我想从用户向DataTable插入数据。我得到这个例外:“例外:交易附近的语法不正确”。我试图找到语法错误,但我无法解决它。
public void Add_to_Transaction(SqlConnection conn , int serial_number , DataTable dt)
{
try
{
//DataTable dt = new DataTable();
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = conn;
cmd1.CommandText = "SELECT * FROM Transaction";
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = cmd1;
adapter.Fill(dt);
SqlParameter serial_number1 = new SqlParameter("product_id",serial_number);
SqlParameter quantity = new SqlParameter("quantity", 0);
SqlParameter date = new SqlParameter("date", DateTime.Today);
cmd1.Parameters.Add(serial_number1);
cmd1.Parameters.Add(quantity);
cmd1.Parameters.Add(date);
Console.WriteLine("111111111111111111");
cmd1.CommandText = "INSERT INTO Transaction (quantity,date,product_id) VALUES (@quantity,@date,@product_id)";
cmd1.ExecuteNonQuery();
Console.WriteLine("222222222222222222");
cmd1.Parameters.Clear();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
答案 0 :(得分:3)
T-SQL中有一些词是保留关键词。你不能在sql中直接使用它们而不使用括号。因此,要么为这些列或表名选择不同的名称,要么在它们周围使用括号[forbiddenword]
:
INSERT INTO [Transaction] (quantity,date,product_id) VALUES (@quantity,@date,@product_id);
SELECT * FROM [Transaction];
答案 1 :(得分:1)
SELECT * FROM [Transaction]
在[ ]
中添加单词会使SQL知道它不是关键字。
答案 2 :(得分:0)
Transaction
是关键词。
这是你的意思吗?