如何解决'Transaction'附近的错误语法?

时间:2013-04-11 20:06:38

标签: c# sql datatable

我想从用户向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);
   }
 }

3 个答案:

答案 0 :(得分:3)

T-SQL中有一些词是保留关键词。你不能在sql中直接使用它们而不使用括号。因此,要么为这些列或表名选择不同的名称,要么在它们周围使用括号[forbiddenword]

INSERT INTO [Transaction] (quantity,date,product_id) VALUES (@quantity,@date,@product_id);
SELECT * FROM [Transaction];

Reserved Keywords (Transact-SQL)

答案 1 :(得分:1)

SELECT * FROM [Transaction]

[ ]中添加单词会使SQL知道它不是关键字。

答案 2 :(得分:0)

Transaction是关键词。 这是你的意思吗?