INSERT语句中的列多于VALUES子句中指定的值?

时间:2015-01-24 10:20:02

标签: c# mysql sql-server

我一直在绊倒这个问题而不能在我的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语句中的列=给定值的数量。

任何帮助将不胜感激..

1 个答案:

答案 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,。