Метод ExecuteScalar и база данных Mysql

Mysql метод ExecuteScalar

Метод ExecuteScalar класса MySqlCommand обычно используется в том случаи, когда необходимо выполнить запрос к базе данных Mysql и вернуть какое-то одно единственное значение.

Например, предположим, что у нас есть база данных «company», которая содержит всего одну таблицу «users» состоящую из двух колонок: id и name.

таблица

Рассмотрим пример, в котором нам нужно получить количество всех записей, которые содержаться в данной таблице.

using MySql.Data.MySqlClient; //Добавить
private int GetNumberOfRecords()
{
int cntRcrds = 0;
MySqlConnectionStringBuilder mysqlCSB;
mysqlCSB = new MySqlConnectionStringBuilder();
mysqlCSB.Server = "127.0.0.1";
mysqlCSB.Database = "company";
mysqlCSB.UserID = "adminbd";
mysqlCSB.Password = "123";
string queryString = "SELECT COUNT(*) FROM users";
try
{
using(MySqlConnection con = new MySqlConnection())
{
con.ConnectionString = mysqlCSB.ConnectionString;
con.Open();
using(MySqlCommand com = new MySqlCommand(queryString,con))
{
cntRcrds = Convert.ToInt32(com.ExecuteScalar());
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return cntRcrds;
}

Более подробно о том, как работать с базой данных Mysql, можно прочитать, перейдя по ссылке.

Обратите внимание на то, что полученный результат имеет тип object, который затем преобразовывается в тип int.

Очень часто здесь допускают ошибку, используя следующую запись:

cntRcrds = (int)com.ExecuteScalar();

Такой способ преобразования не стоит использовать, так как если в указанной таблице не будет ни одной записи, то тогда в результате будет получено значение null, которое при попытке конвертирования к типу int будет приводить к возникновению исключения.

Лучше использовать метод ToInt32 класса Convert, который позволяет без каких-либо проблем преобразовать полученное значение null в значение ноль. В результате в переменной (cntRcrds) всегда будут только числа.

Вызов метода GetNumberOfRecords:

private void button1_Click(object sender, EventArgs e)
{
int countRecords = GetNumberOfRecords();
}

Результат: 6.

Рассмотрим ещё один пример, в котором мы выполним выборку имен пользователей по заданному условию:

string queryString = "SELECT * FROM users WHERE name LIKE '%ша'";

Результатом выполнения метода ExecuteScalar является значение первого столбца первой строки результирующего набора.

То есть в данном примере сначала отправляется запрос к базе данных Mysql, потом делается выборка с указанным условием, после чего нам возвращается самое первое значение из колонки id.

Результат: 1.

значение таблицы

Если удалить первую строку в таблице и снова выполнить тот же самый запрос, то результатом будет значение: 3.

3

Читайте также:

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*