连接到数据库并将数据插入表中

时间:2019-04-18 00:31:13

标签: c#

我正在尝试连接到数据库并将数据插入到预先存在的表中。我似乎可以连接到数据库,但是无法将数据插入表中。我该如何插入 数据存储到Visual Studio中的数据库中?

我已经学习了如何传递参数并尝试了传递参数,但是当我运行程序时,我仍然收到异常。尝试添加新记录时,我已经附上了错误的屏幕截图。我为insert语句查找了多种不同的语法,但不确定自己在做什么错。在下面,我提供了三个屏幕截图,一个是表单本身,是我收到的错误,而在底部是表格结构。 Insert Exception

Form

private void btnAccept_Click(object sender, EventArgs e)
{
    if (IsValidData())
    {
        if (addProduct)
        {
            product = new Product();
            this.PutProductData(product);

            try
            {
                SqlConnection sqlConn = new SqlConnection("Data Source= (LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\MMABooks.mdf;Integrated Security=True");
                SqlCommand sqlComm = new SqlCommand();
                sqlComm = sqlConn.CreateCommand();
                sqlComm.CommandText = @"INSERT INTO Products (paramColum) VALUES
                                      (@ProductCode, @Description,
                                       @UnitPrice, @OnHandQuantity)";
                sqlComm.Parameters.Add("@ProductCode", SqlDbType.VarChar);
                sqlComm.Parameters.Add("@Description", SqlDbType.VarChar);
                sqlComm.Parameters.Add("@UnitPrice", SqlDbType.VarChar);
                sqlComm.Parameters.Add("@OnHandQuantity", SqlDbType.VarChar);
                sqlConn.Open();
                sqlComm.ExecuteNonQuery();
                sqlConn.Close();

                // Add code here to call the AddProduct method of the ProductDB class.
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, ex.GetType().ToString());
            }
        }
    }
}

private void btnAdd_Click(object sender, EventArgs e)
{
    frmAddModifyProduct addProductForm = new 
    frmAddModifyProduct();
    addProductForm.addProduct = true;
    DialogResult result = addProductForm.ShowDialog();

    if (result == DialogResult.OK)
    {
        product = addProductForm.product;
        txtCode.Text = product.Code;
        this.DisplayProduct();
    }
}

它应该在“产品”表中输入一条记录。如果我将它添加到insert语句中,我将找出检索,更新和删除的地方。

TableStructure

1 个答案:

答案 0 :(得分:1)

您需要添加参数值,例如:

command.Parameters.Add("@LastName", SqlDbType.VarChar, 30).Value = "Smith";
command.Parameters.Add("@GenderCode", SqlDbType.Char, 1).Value = "M";.

下面是原始答案,但正如下面评论中所指出的,请避免使用,reasons

cmd.Parameters.AddWithValue("@ProductCode", product.Code);
cmd.Parameters.AddWithValue("@Description", product.Description);

在当前代码中,您仅设置了参数,但未传递值。

  

编辑:基于上面的@MaxSzczurek评论

您的INSERT INTO列与您的VALUES子句不匹配。

INSERT INTO Products (paramColumn)应该更改为:

INSERT INTO Products(ProductCode, Description, UnitPrice, OnHandQuantity)