c#将int值插入SQL表

时间:2018-10-16 11:56:51

标签: c# sql insert int

我想在SQL表中插入一些数据。但是在插入int不管我尝试了什么,都会出现错误:

  

System.Data.SqlClient.SqlException:'转换时转换失败   数据类型为int的varchar值'@ID'。

我什至手动将ID设置为1,只是为了100%确认它是int,但仍然收到该错误

String query = "INSERT INTO table(dbo.table.ID, dbo.table.secondvar) 
VALUES ('@ID','@secondvar')";             
 using (SqlCommand cmd = new SqlCommand(query, connection))
                    {
                        int ID = 1;
                        cmd.Parameters.AddWithValue("@ID", ID);
                        cmd.Parameters.AddWithValue("@secondvar", tableModel.secondvar);    
                        connection.Open();
                        int result = cmd.ExecuteNonQuery();

2 个答案:

答案 0 :(得分:5)

删除值周围的引号。框架已经处理了。

VALUES ('@ID','@secondvar')

应该是

VALUES (@ID,@secondvar)

答案 1 :(得分:1)

ID是一个整数,因此它不能在''之间:

更改此行:

String query = "INSERT INTO table(dbo.table.ID, dbo.table.secondvar) 
VALUES ('@ID','@secondvar')";

对此:

String query = "INSERT INTO table(dbo.table.ID, dbo.table.secondvar) 
VALUES (@ID,@secondvar)";

its better avoid using AddWithValue的使用方式如下:

String query = "INSERT INTO table(dbo.table.ID, dbo.table.secondvar) 
VALUES (@ID,'@secondvar')";             
 using (SqlCommand cmd = new SqlCommand(query, connection))
 {
      int ID = 1;
      cmd.Parameters.Add("@ID", SqlDbType.Int).Value = ID;
      cmd.Parameters.Add("@secondvar", SqlDbType.VarChar).Value = somevalue; 
      //rest of the code
 }