SQL服务器插入错误:列名或所提供值不匹配表定义的数(SQL Server Insert Error

2019-10-18 07:31发布

我试图将数据添加到SQL Server中的表,使用Microsoft Visual Studio 2012年。然而,它给了我这个错误:

的SQLException是由用户代码undandled。
列名或提供值的数目不匹配表定义。

这里是我的代码:

protected void btnAdd_Click(object sender, EventArgs e)
{
    con.Open(); // establish a database connection
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandText =
        "INSERT INTO Products VALUES (@CatID, @Name, " +
        "@Image, @Description, @Price)";
    cmd.Parameters.Add("@CatID", SqlDbType.Int).Value =
        ddlCategories.SelectedItem.Value;
    cmd.Parameters.Add("@Name", SqlDbType.NVarChar).Value =
        txtName.Text;
    cmd.Parameters.Add("@Image", SqlDbType.NVarChar).Value =
        "http://localhost:12345/CAPSTONE/images/" + fuImage.FileName;
    cmd.Parameters.Add("@Description", SqlDbType.NVarChar).Value =
        txtDescription.Text;
    cmd.Parameters.Add("@Price", SqlDbType.Decimal).Value =
        txtPrice.Text;
    // saving the image file to your website folder 'Images'
    fuImage.SaveAs(Server.MapPath("~/images/" + fuImage.FileName));
    cmd.ExecuteNonQuery();
    con.Close();
    Response.Redirect("Default.aspx");
}

Answer 1:

仔细检查你的产品表的主键(我假设,如果你的产品ID),如果它的值设置为自动增量(标识规范>是一种身份= TRUE)



Answer 2:

你必须使你的数据库表中的所有列在查询时使用此梅索德(和标识不输入值,如果它是自动增量)在你的情况下

 "INSERT INTO Products VALUES (@CatID, @Name, " +
    "@Image, @Description, @Price)";

你只有5列CATID不是一个自动增量值! 你如果真检查!

你可以选择的值你想通过这个查询,使

  cmd.CommandText ="INSERT INTO Products (CatID, Name,Image, Description, Price) 
                    VALUES  (@CatID, @Name,@Image, @Description, @Price)";


Answer 3:

这意味着你的Products表中有比你在你所提供的更多或更少的列VALUES语句。

(@CatID, @Name, @Image, @Description, @Price)

如果执行查询sp_columns Products管理工作室,它会列出所有表中的列。

但是,如果你只需要插入这些值,则需要改为执行下面的查询:

INSERT Products (CatID, Name, Image, Description, Price)

如果指定了INSERT没有指定的列名声明,预计要填充的所有列



Answer 4:

使用try catch块,并找出在抓确切的问题,它会说你错过了什么,休息最可能的答案已经给出以上



Answer 5:

    private void btninsert_Click(object sender, EventArgs e)
    {
        try
        {
            con.Open();
            cmd = new SqlCommand("insert into Empinfo values ('" + textBox1.Text + "''" + textBox2.Text + "''" + textBox3.Text + "''" + textBox4.Text + "')", con);

            cmd.ExecuteNonQuery();
            MessageBox.Show("Insert the record");
            cmd.Dispose();
        }
        catch(Exception e1)
            {
                MessageBox.Show("e1");
            }
            finally
        {

        con.Close();

    }
    }


文章来源: SQL Server Insert Error: Column name or number of supplied values does not match table definition