Функция агрегации SQL, подсчитывающая число имен, входящих в БД.C# SQL Aggregate ExecuteScalar Возвращаемый запрос
string cnnStr = ConfigurationManager.ConnectionStrings["LGFConnectionString"].ConnectionString;
string mySQL = "SELECT COUNT(*) FROM " + which.table + " WHERE " + which.column + " = ?pram;";
string value = null;
using (MySqlConnection cnn = new MySqlConnection(cnnStr))
{
using (MySqlCommand cmd = new MySqlCommand(mySQL, cnn))
{
MySqlParameter param = new MySqlParameter("?pram", MySqlDbType.VarChar, 128);
param.Value = which.text;
cmd.Parameters.Add(param);
cnn.Open();
value = cmd.ExecuteScalar() as string;
value = cmd.ExecuteScalar().ToString();
cnn.Close();
}
}
Обратите внимание, что я позвонил cmd.ExecuteScalar
дважды. Интересная часть заключается в том, что запрос возвращает разные результаты.
value = cmd.ExecuteScalar() as string;
не возвращает правильное значение. Он возвращает null для обоих, если имя присутствует или отсутствует в столбце имени.
value = cmd.ExecuteScalar().ToString();
правильно возвращается. Это возвращает «1», если присутствует, и «0», если отсутствует.
При поиске в Интернете я не нашел понятного объяснения.
Я прочитал, что если имя отсутствует в столбце имен, то cmd.ExecuteScalar
вернет null
.
В чем разница между:
value = cmd.ExecuteScalar() as string;
value = cmd.ExecuteScalar().ToString();
Спасибо, deDogs
Подобный вопрос задают и ответил здесь: http://stackoverflow.com/questions/2099900/difference-between-tostring-and-as-string-in-c-sharp – 03Usr