#c# #ado.net
#c# #ado.net
Вопрос:
Я разрабатываю систему POS для стационарного. В настоящее время я застрял на странице продаж. Я хочу добавить в таблицу данных продукт, когда пользователь вводит штрих-код, количество, скидку и идентификатор клиента, и это ошибка, которую я получаю:
System.Data.SqlClient.SQLException: «Неправильный синтаксис рядом с ключевым словом «транзакция»
string query;
string query2;
using (SqlConnection sqlcon2 = new SqlConnection(cons))
{
query = "insert into dbo.transaction set (qte,remise,idclt) values ('" textBox4.Text "','" comboBox1.Text "','" textBox6.Text "')";
SqlDataAdapter sda = new SqlDataAdapter(query, sqlcon2);
}
using (SqlConnection sqlcon = new SqlConnection(cons))
{
sqlcon.Open();
query2 = "select produit.idprod, produit.nom_produit, transaction.qte, transaction.remise, transaction.idclt, transaction.qte*produit.prixV as Total from [dbo].[produit] join [dbo].[transaction] on produit.idprod=transaction.idprod join [dbo].[clients] clt on clt.idclt=transaction.idclt where produit.idprod= '" textBox4.Text "' and transaction.qte='" textBox5.Text "'";
SqlDataAdapter sda2 = new SqlDataAdapter(query2, sqlcon);
DataTable dt = new DataTable();
sda2.Fill(dt);
dgv.DataSource = dt;
}
Схема базы данных:
Дизайн формы:
Комментарии:
1. Помог ли приведенный ниже ответ решить проблему?
Ответ №1:
Здравствуйте и добро пожаловать в Stack Overflow.
Весьма вероятно, что проблема в вашем коде заключается в том, что имя таблицы является transaction
ключевым словом в используемой вами СУБД (о чем свидетельствует сообщение об исключении). Попробуйте изменить его на что-то другое.
Кроме того, ваш фрагмент уязвим для атаки с использованием SQL-инъекций. Если ваш проект не находится в стадии разработки, вам следует рассмотреть возможность использования инфраструктуры ORM, такой как Entity Framework Core.
Комментарии:
1. Имя таблицы
transaction
отсутствуетtransactions
, и проблема может быть решена с использованием квадратных скобок, например[transaction]
, — хотя переименование является лучшим вариантом.