6.1.2 Объект MySqlCommand
После установления соединения с базой данных MySQL, следующий шаг — выполнение операций с базой данных. Это можно сделать с помощью объекта MySqlCommand.
После его создания доступны три основных метода:
ExecuteReaderдля запроса к базе данных. Результаты обычно возвращаются в объектеMySqlDataReader, созданном с помощьюExecuteReader.ExecuteNonQueryдля вставки, обновления и удаления данных.ExecuteScalarдля возвращения одного значения.
После создания объекта MySqlCommand, можно вызвать один из перечисленных методов для выполнения операции с базой данных, например, для выполнения запроса. Результаты обычно возвращаются в объекте MySqlDataReader, а затем обрабатываются. Например, результаты могут быть отображены, как показано в следующем примере кода.
using System;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
public class Tutorial2
{
public static void Main()
{
string connStr = "server=localhost;user=root;database=world;port=3306;password=******";
MySqlConnection conn = new MySqlConnection(connStr);
try
{
Console.WriteLine("Connecting to MySQL...");
conn.Open();
string sql = "SELECT Name, HeadOfState FROM Country WHERE Continent='Oceania'";
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Console.WriteLine(rdr[0]+" -- "+rdr[1]);
}
rdr.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
Console.WriteLine("Done.");
}
}
Когда соединение создано и открыто, код создаёт объект MySqlCommand. Затем запрос SQL, который нужно выполнить, передаётся в конструктор MySqlCommand. Метод ExecuteReader используется для генерации объекта MySqlReader. Объект MySqlReader содержит результаты, полученные выполнением SQL запроса над объектом MySqlCommand. После получения результатов в объекте MySqlReader, результаты могут быть обработаны. В данном случае информация выводится с помощью цикла while. Наконец, объект MySqlReader удаляется, вызывая метод Close.
Следующий пример демонстрирует использование метода ExecuteNonQuery.
Процедура вызова метода ExecuteNonQuery проще, так как нет необходимости создавать объект для хранения результатов. Это потому, что ExecuteNonQuery используется только для вставки, обновления и удаления данных. Следующий пример иллюстрирует простое обновление таблицы Country:
using System;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
public class Tutorial3
{
public static void Main()
{
string connStr = "server=localhost;user=root;database=world;port=3306;password=******";
MySqlConnection conn = new MySqlConnection(connStr);
try
{
Console.WriteLine("Connecting to MySQL...");
conn.Open();
string sql = "INSERT INTO Country (Name, HeadOfState, Continent) VALUES ('Disneyland','Mickey Mouse', 'North America')";
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
Console.WriteLine("Done.");
}
}
Запрос формируется, создаётся объект MySqlCommand, и метод ExecuteNonQuery вызывается на объекте MySqlCommand. Вы можете проверить, что обновление выполнено корректно, используя mysql для доступа к вашей базе данных MySQL.
Наконец, можно использовать метод ExecuteScalar для возвращения одного значения. Опять же, это просто, так как объект MySqlDataReader не нужен для хранения результатов, вместо него используется переменная. Следующий код иллюстрирует использование метода ExecuteScalar:
using System;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
public class Tutorial4
{
public static void Main()
{
string connStr = "server=localhost;user=root;database=world;port=3306;password=******";
MySqlConnection conn = new MySqlConnection(connStr);
try
{
Console.WriteLine("Connecting to MySQL...");
conn.Open();
string sql = "SELECT COUNT(*) FROM Country";
MySqlCommand cmd = new MySqlCommand(sql, conn);
object result = cmd.ExecuteScalar();
if (result != null)
{
int r = Convert.ToInt32(result);
Console.WriteLine("Number of countries in the world database is: " + r);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
Console.WriteLine("Done.");
}
}
В этом примере используется простой запрос для подсчёта строк в таблице Country. Результат получается, вызывая ExecuteScalar на объекте MySqlCommand.
© 2025 Oracle
Licensed under the GPLv2 License.