【问题标题】:argumentnullexception was unhandled insert intoargumentnullexception 未处理插入
【发布时间】:2014-06-25 22:54:00
【问题描述】:

我正在尝试通过 datagridview 将数据插入数据库。到目前为止,我的代码检查表是否存在,如果不存在,它会创建一个新表,然后将数据复制到其中。我可以将数据复制到表中,一切正常。直到我得到错误 argumentnullexception is unhandled。数据被插入到表中,我可以查看表并看到数据在那里。这是错误的描述:

参数化查询'insert into [alalala_Thomas_Humphries_Quote]([Item Name], [Item Description], [Retail Price], [Supplier Number], [Quantity Required], [In stock], [Cost Price], [Total Cost ],[Total Retail]) values (@item, @desc,@retail,@supplier,@quantity,@stock,@cost,@totalcost, @totalretail)' 需要一个未提供的参数值。 参数名称:@item

这是我的代码:

private void insertData()
        {
            string tableName = quotenameTxt.Text + "_" + firstTxt.Text + "_" + surenameTxt.Text + "_Quote";

            SqlCeConnection con = new SqlCeConnection(@"Data Source=|DataDirectory|\LWADataBase.sdf");
            con.Open();
            SqlCeDataAdapter da = new SqlCeDataAdapter();

            for (int i = 0; i < dataGridView1.Rows.Count - 0; i++)
            {
                string query = "insert into [" + tableName + "]([Item Name], [Item Description], [Retail Price], [Supplier Number], [Quantity Required], [In stock], [Cost Price], [Total Cost],[Total Retail]) values (@item, @desc,@retail,@supplier,@quantity,@stock,@cost,@totalcost, @totalretail)";
                SqlCeCommand cmd = new SqlCeCommand(query, con);
                cmd.Parameters.Add(new SqlCeParameter("@item", dataGridView1.Rows[i].Cells[0].Value));
                cmd.Parameters.Add(new SqlCeParameter("@desc", dataGridView1.Rows[i].Cells[1].Value));
                cmd.Parameters.Add(new SqlCeParameter("@retail", dataGridView1.Rows[i].Cells[2].Value));
                cmd.Parameters.Add(new SqlCeParameter("@supplier", dataGridView1.Rows[i].Cells[3].Value));
                cmd.Parameters.Add(new SqlCeParameter("@quantity", dataGridView1.Rows[i].Cells[4].Value));
                cmd.Parameters.Add(new SqlCeParameter("@stock", dataGridView1.Rows[i].Cells[5].Value));
                cmd.Parameters.Add(new SqlCeParameter("@cost", dataGridView1.Rows[i].Cells[6].Value));
                cmd.Parameters.Add(new SqlCeParameter("@totalcost", dataGridView1.Rows[i].Cells[7].Value));
               cmd.Parameters.Add(new SqlCeParameter("@totalretail", dataGridView1.Rows[i].Cells[8].Value));
                da.InsertCommand = cmd;
                cmd.ExecuteNonQuery();
                MessageBox.Show("Quotation :" + tableName + " saved.", "Saved");
            }


        }  

我正在使用 C# 2010 和 SQLCe 3.5。

【问题讨论】:

  • 你能粘贴你的建表代码吗?

标签: c# datagridview sql-server-ce


【解决方案1】:

由于数据被插入到表中,在数据被传递到数据库之后,对象可能存在转换问题。尝试将 dataGridView1 值转换为正确的类型,然后再将它们作为参数传递,如下所示:

cmd.Parameters.Add(new SqlCeParameter("@item", Convert.ToString(dataGridView1.Rows[i].Cells[0].Value)));

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 2020-06-07
    • 2020-02-25
    • 2013-07-07
    • 2017-04-01
    • 1970-01-01
    • 2017-08-19
    相关资源
    最近更新 更多