2013-04-11 51 views
-1

我想从用户的数据表插入数据。我得到这个异常:“异常:在事务附近的语法不正确”。我试图找到语法错​​误,但我无法解决它。如何解决“交易”附近的错误语法?

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

“Tatabransaction”?你在这里或在你的程序中输入错了吗? – tnw 2013-04-11 20:07:23

+1

大海捞针出现在脑海中......什么原因导致了错误? – Sayse 2013-04-11 20:07:53

+3

你有一个流浪'之前@product_id – 2013-04-11 20:08:36

回答

0
SELECT * FROM [Transaction] 

[ ]把词汇,SQL知道这是不是一个关键字。

3

T-SQL中有保留关键字的词。你不能直接在sql中使用它们,不要在它们周围使用括号。所以,要么选择这些列或表名或使用括号[forbiddenword]他们周围不同的名字:

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

Reserved Keywords (Transact-SQL)

+0

谢谢蒂姆!!!!!!! – SmadjaM 2013-04-11 21:28:03

+0

谢谢大家! – SmadjaM 2013-04-11 23:58:18

0

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