SQL-запрос системы POS для отображения корзины C#

#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] , — хотя переименование является лучшим вариантом.