#c#
#c#
Вопрос:
Я пытаюсь подключиться к базе данных и вставить данные в уже существующую таблицу. Кажется, я могу подключиться к базе данных, но у меня возникли проблемы с получением данных для вставки в таблицу. Как мне вставить данные в базу данных в Visual Studio?
Я уже научился передавать параметры и пытался это сделать, но когда я запускаю программу, я все равно получаю исключения. Я приложил скриншот ошибки при попытке добавить новую запись. Я просмотрел несколько разных синтаксисов для оператора insert, но не уверен, что я делаю неправильно. Ниже я включил три скриншота, один из которых — сама форма, ошибка, которую я получаю, а внизу — структура таблицы. Вставить исключение
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, я разберусь с извлечением, обновлением и удалением.
Комментарии:
1. Ваша ВСТАВКА В столбцы не соответствует вашему предложению VALUES. ВСТАВКА В продукты (paramColumn) должна быть ВСТАВЛЕНА В продукты (ProductCode, Description, UnitPrice, OnHandQuantity)
2. @MaxSzczurek ах, пропустил это, да, это тоже нужно исправить, вы не возражаете, если я добавлю это к ответу?
3. @peeyushsingh Вам не нужно запрашивать разрешение, чтобы сделать ваш ответ правильным.
4. Я отредактировал код в вашем вопросе в соответствии с обычными соглашениями C #. Пожалуйста, помните, что при задании вопроса здесь важна удобочитаемость вашего кода, поэтому потратьте некоторое время на его правильное форматирование, как это сделал я. Кроме того, включите сведения об ошибке в свой вопрос в виде текста , а не в виде изображения ошибки. Изображения должны быть дополнительными, но они не должны быть необходимы для получения важных деталей.
5. @peeyushsingh Пожалуйста, сделайте!
Ответ №1:
Вам нужно добавить значения параметров, что-то вроде:
command.Parameters.Add("@LastName", SqlDbType.VarChar, 30).Value = "Smith";
command.Parameters.Add("@GenderCode", SqlDbType.Char, 1).Value = "M";.
Оригинальный ответ ниже, но, как указано в комментариях ниже, пожалуйста, избегайте этого, причины
cmd.Parameters.AddWithValue("@ProductCode", product.Code);
cmd.Parameters.AddWithValue("@Description", product.Description);
В текущем коде вы только что настроили параметры, но не передали значение.
РЕДАКТИРОВАТЬ: на основе комментариев @MaxSzczurek выше
Ваша ВСТАВКА В столбцы не соответствует вашему предложению VALUES.
INSERT INTO Products (paramColumn)
должно быть изменено на:
INSERT INTO Products(ProductCode, Description, UnitPrice, OnHandQuantity)
Комментарии:
1. Пожалуйста, не рекламируйте использование
AddWithValue()
, это зло . 😉2. @stickybit спасибо, совсем не знал об этом! жизнь под скалой!!
3. Это очень помогло! Я исправил параметры и инструкцию insert, но теперь я получаю ошибку ограничения первичного ключа: (
4. первичные ключи @Triptonix используются для обеспечения уникальной идентификации строк, ваш код продукта является первичным ключом, вы должны вставлять две строки с одинаковым кодом продукта
5. значением вашего параметра будет значение, введенное пользователем, или переменная, имеющая введенное пользователем значение