我想在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();
答案 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
}