#c# #sql
#c# #sql
Вопрос:
Как присвоить столбцу значение true или false. Я получаю количество значений для идентификатора. Затем проверяем счетчик и присваиваем ему логические значения true или false. На стороне просмотра мне нужно проверить, является ли полученное значение true или false, и на основе значения true или false мне нужно отобразить другой текст в моем представлении. Но теперь мой пункт.Полное значение всегда отображается как false. что я здесь делаю не так?
var sqlst = @"select count(*) as columnCount, mem_name as Name, mem_add as address from my_table whereid = 1234"
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MY_CONNECTION"].ConnectionString))
{
connection.Open();
using (var sqlCommand = new SqlCommand(sqlst, connection)
using (var sqlResult = sqlCommand.ExecuteReader())
{
while (sqlResult.Read())
{
var checkcount = Convert.ToInt32(sqlResult["columnCount"].ToString());
if (checkcount != 0)
{
Item.Complete = sqlResult["columnCount"].ToString() == "YES" ? true:false;
}
else
{
Item.Complete = sqlResult["columnCount"].ToString() == "NO" ? true: false;
}
}
}
}
Комментарии:
1. Вы уверены, что столбец с именем
ColumnCount
имеет значение с именемYES
? Потому что это не то слово, которое я бы ассоциировал с подсчетом. (Кроме того, этого не может быть,YES
потому что тогдаConvert.ToInt32
это не сработало бы. Либо ваше имя столбца неверно, либо ваши значения неверны.)2. Моя модель похожа на этот общедоступный bool columnCount { get; set; }. Я вижу получение целочисленных значений в checkcount .
3. Вам не нужен троичный оператор для присвоения значения true false, поскольку
==
возвращает логическое значение.4. Если столбец является a
BIT
и сопоставлен логическому значению, то весь этот.ToString()
танец излишен.Item.Complete = (bool) sqlResult["columnCount"]
должно получиться.5. Запрос, который вы предоставили, неверен, он выдаст ошибку, поскольку вы не используете какое-либо
group by
предложение сcount(*)
.
Ответ №1:
Вместо передачи yes
и No
попробуйте использовать 1 и 0