Команда mysql executealscalar возвращает ноль в C#
Допустим, у меня есть результат запроса, который выглядит следующим образом:
ID NAME Phone
---- ---- -----
1 John 123456
2 John 125678
3 John 345678
4 Abby 456789
5 Abby 567890
Я хочу вернуть только один экземпляр строки имени: Джон, где номер телефона, например, "12%".
В C# я написал этот синтаксис, чтобы получить переменную PersonName в результате запроса.
MySqlConnection connection = new MySqlConnection("SERVER=" + "localhost" + ";" + "DATABASE=" + "testdb" + ";" + "UID=" + "root" + ";" + "PASSWORD=" + "" + ";");
MySqlCommand command = new MySqlCommand();
connection.Open();
string selectQuery = "SELECT NAME FROM testtable WHERE Phone LIKE '12%' ORDER BY ID LIMIT 1";
command.Connection = connection;
command.CommandText = selectQuery;
string PersonName = (string)command.ExecuteScalar();
connection.Close();
Я не знаю, что не так с моим кодом, но PersonName возвращает ноль. Что я сделал не так?
2 ответа
Мы должны пропустить что-то еще здесь. Попробуйте следующий пример кода на основе того, что вы предоставили:
try {
MySqlConnection connection = new MySqlConnection("SERVER=localhost;DATABASE=testdb;UID=root;PASSWORD=;");
MySqlCommand command = new MySqlCommand();
connection.Open();
string selectQuery = "SELECT NAME FROM testtable WHERE Phone LIKE '12%' ORDER BY ID LIMIT 1";
command.Connection = connection;
command.CommandText = selectQuery;
string PersonName = (string)command.ExecuteScalar();
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
finally {
connection.Close();
}
У меня такое ощущение, что по какой-то причине вызов.Open() не удался, и ошибка глотается в другом месте. Попробуйте выше и дайте мне знать, что вы узнаете.
сделать это: изменить это
(string)command.ExecuteScalar();
по
Convert.ToString(command.ExecuteScalar());
MySqlConnection connection = new MySqlConnection("SERVER=" + "localhost" + ";" + "DATABASE=" + "testdb" + ";" + "UID=" + "root" + ";" + "PASSWORD=" + "" + ";");
Команда MySqlCommand = новая MySqlCommand();
connection.Open();
string selectQuery = "SELECT NAME FROM testtable WHERE Phone LIKE '12%' ORDER BY ID LIMIT 1";
command.Connection = connection;
command.CommandText = selectQuery;
string PersonName = Convert.ToString(command.ExecuteScalar());
connection.Close();