参数nullexception未处理
本文关键字:未处理 nullexception 参数 | 更新日期: 2023-09-27 18:10:22
我试图通过datagridview插入数据到数据库。到目前为止,我的代码检查表是否存在,如果不存在,则创建一个新表,然后将数据复制到其中。我可以把数据复制到表中,一切正常。直到我得到错误argumentnullexception未处理。数据被插入到表中,我可以查看表并看到数据在那里。下面是错误的描述:
参数化查询'insert into [alalala_Thomas_Humphries_Quote]([商品名称],[商品描述],[零售价格],[供应商编号],[所需数量],[库存],[成本价格],[总成本],[总零售])值(@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。
由于数据已插入到表中,因此在将数据传递到数据库后,可能会出现对象的类型转换问题。在将dataGridView1值作为参数传递之前,尝试将它们转换为适当的类型,如下所示:
cmd.Parameters.Add(new SqlCeParameter("@item", Convert.ToString(dataGridView1.Rows[i].Cells[0].Value)));