我一直在绊倒这个问题而不能在我的sql insert语句中配置错误。我需要在表中插入一个新行但是 它一直告诉我insert语句中的列比子句中的列多。
以下是我的发言:
kSqlCommand.CommandText = "INSERT INTO BillsDetails ([BillID],[CallDialledID],[CallDateTime],[CallDuration],[CallNetPrice],[CallRetailPrice],[CallDiscountPrice]) VALUES ('" + strBillID + "','" + strDialledNumberID + "','" + strCallDate + "','" + strCallDuration + "','" + dCallNetPrice + "','" + dCallRetailPrice + "','" + dCallDiscountPrice + "')";//SqlStatement to Add new Bill
kSqlCommand.ExecuteReader();
每次我收到此错误:
“INSERT语句中的列数多于指定的值 在VALUES子句中使用c#。 VALUES中的值的数量 子句必须与INSERT中指定的列数相匹配 语句“。
显然,它是一个语法问题,因为INSERT语句中的列=给定值的数量。
任何帮助将不胜感激..
答案 0 :(得分:0)
string cmdString="INSERT INTO BillsDetails('BillID','CallDialledID','CallDateTime','CallDuration','CallNetPrice','CallRetailPrice','CallDiscountPrice') VALUES (@val1, @va2, @val3,@val4, @va5, @val6,@val7)";
string connString = "your connection string";
using (SqlConnection conn = new SqlConnection(connString))
{
using (SqlCommand comm = new SqlCommand())
{
comm.Connection = conn;
comm.CommandString = cmdString;
comm.Parameters.AddWithValue("@val1", 'your value');
comm.Parameters.AddWithValue("@val2", 'your value');
comm.Parameters.AddWithValue("@val3", 'your value');
comm.Parameters.AddWithValue("@val4", 'your value');
comm.Parameters.AddWithValue("@val5", 'your value');
comm.Parameters.AddWithValue("@val6", 'your value');
comm.Parameters.AddWithValue("@val7", 'your value');
try
{
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
}
Catch(SqlException e)
{
}
}
}
我认为尝试使用ExecuteNonQuery而不是ExecuteReader 因为ExecuteReader正在读取数据库内容而不是插入行 请阅读这篇文章https://msdn.microsoft.com/en-us/library/9kcbe65k(v=vs.110).aspx,。