Обновление базы данных по убыванию - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь уменьшить доступность книги на одну для КАЖДОЙ книги, купленной в рамках транзакции - у меня есть 50 записей книг в БД.

PS Я знаю о SQL-инъекциях - я расскажу, чтоout.

В приведенном ниже коде показана новая запись транзакции, вставляемая в БД. Я хотел бы реализовать следующее: при добавлении новой записи в БД купленная книга уменьшается на '1'доступность.

private void btnPay_Click(object sender, EventArgs e)
    {
        string ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename= C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\DATA\Library System Project.mdf ;Integrated Security=True;Connect Timeout=30";

        string Query = "insert into BookSale_Transactions (CustomerID, BookISBN, DateSold) values ('" + this.txtCustomerID.Text.Trim() + "','" + this.cbBookName.SelectedValue + "','" + this.msktxtDateSold.Text.Trim() + "');";

        SqlConnection DBCon = new SqlConnection(ConnectionString);
        SqlCommand DBCommand = new SqlCommand(Query, DBCon);
        SqlDataReader DBReader;

        try
        {
            DBCon.Open();
            DBReader = DBCommand.ExecuteReader();
            MessageBox.Show("New transaction record added to the system.", "Library System", MessageBoxButtons.OK);
        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

        finally
        {
            DBCon.Close();

            this.txtCustomerID.ResetText();
        }
    }

1 Ответ

0 голосов
/ 04 июня 2019

Это скорее вопрос SQL, а не вопрос ac #, но у вас есть 2 способа сделать это:

  1. Сначала было бы использовать процедуру сохранения для выполнения 2 транзакций, 1для вставки в транзакции продажи книг и еще одной для обновления таблицы, в которой хранится информация об удалении книги 1 из счетного элемента.Похоже, что этот вариант является лучшим и более безопасным из-за того, что он является процедурой хранения

  2. Вторым способом было бы иметь 2 запроса, один для вставки и один для обновления, и выполнитьчитатель для обоих запросов.Это менее безопасно, но оно выполнит работу с c #

При условии моего ответа я настоятельно рекомендую вам изучить процедуры хранения.

Редактировать: Вот каквы совершаете транзакцию

SqlTransaction tran;
    try
    {
            DBCon.Open();
            tran = DBCon.BeginTransaction();
            DBReader = DBCommand.ExecuteReader();
            DBReader2 = DbCommand2.ExecuteNonQuery();
            MessageBox.Show("New transaction record added to the system.", "Library System", MessageBoxButtons.OK);
            tran.Commit();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...