#c# #datagridview #sql-server-ce
#c# #datagridview #sql-server-ce
Вопрос:
Я пытаюсь вставить данные в базу данных через datagridview. Мой код до сих пор проверяет, существует ли таблица, если нет, он создает новую таблицу, а затем копирует в нее данные. Я могу скопировать данные в таблицу, и все работает хорошо. Пока я не получу ошибку, argumentnullexception не был обработан. Данные вставляются в таблицу, и я могу просмотреть таблицу и увидеть, что данные там есть. Это описание ошибки:
Параметризованный запрос ‘вставить в [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.
Комментарии:
1. Можете ли вы вставить свой код создания таблицы?
Ответ №1:
Поскольку данные были вставлены в таблицу, возможно, возникла проблема с приведением объекта после передачи данных в базу данных. Попробуйте преобразовать ваши значения dataGridView1 в правильный тип, прежде чем передавать их в качестве параметров, подобных этому:
cmd.Parameters.Add(new SqlCeParameter("@item", Convert.ToString(dataGridView1.Rows[i].Cells[0].Value)));
Я надеюсь, что это поможет.