Как выполнить несколько строк SQL команда в C# - PullRequest
0 голосов
/ 12 февраля 2020

На самом деле я хочу нажать кнопку и выполнить эти 2 запроса единовременно.

string Query = "UPDATE harga_semasa SET we_buy='" + this.textBox1.Text + "',we_sell='" + this.textBox2.Text + "', idharga_semasa='" + this.label5.Text + "' WHERE type='" + this.label1.Text + "';";
string Query2 = "UPDATE harga_semasa SET we_buy='" + this.textBox3.Text + "',we_sell='" + this.textBox4.Text + "', idharga_semasa='" + this.label10.Text + "' WHERE type='" + this.label4.Text + "';";

MySqlConnection MyConn2 = new MySqlConnection(ConString);
MySqlCommand MyCommand2 = new MySqlCommand(Query2, MyConn2);
MySqlCommand MyCommand1 = new MySqlCommand(Query, MyConn2);
MySqlDataReader MyReader2;
MyConn2.Open();
MyReader2 = MyCommand2.ExecuteReader();
MyReader2 = MyCommand1.ExecuteReader();
MessageBox.Show("Data Updated");
while (MyReader2.Read())
{
}
MyConn2.Close();

Как выполнить несколько с этим кодом? Я пытаюсь добавить некоторые данные в существующую таблицу, которая уже вставлена. Я новичок ie в C# и начинаю понимать часть кода.

1 Ответ

1 голос
/ 12 февраля 2020

Вы не можете повторно использовать одно и то же соединение с несколькими MySqlDataReader объектами одновременно: https://mysqlconnector.net/troubleshooting/connection-reuse/

Поскольку ваш код на самом деле не нуждается в MySqlDataReader, простое исправление заключается в используйте ExecuteNonQuery для выполнения ваших UPDATE операторов.

Вы также должны использовать параметризованные запросы, чтобы избежать SQL инъекций и using операторов для автоматического закрытия соединения

using (var connection = new MySqlConnection(ConString))
{
    connection.Open();

    using (var command = new MySqlCommand(@"UPDATE harga_semasa SET we_buy=@we_buy, we_sell=@we_sell, idharga_semasa=@idharga_semasa WHERE type=@type;", connection)
    {
        command.Parameters.AddWithValue("@we_buy", this.textBox1.Text);
        command.Parameters.AddWithValue("@we_sell", this.textBox2.Text);
        command.Parameters.AddWithValue("@idharga_semasa ", this.label5.Text);
        command.Parameters.AddWithValue("@type", this.label1.Text);

        // use this to run the query (without MySqlDataReader)
        command.ExecuteNonQuery();
    }

    // execute your second query the same way here

    MessageBox.Show("Data Updated");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...