Я пытаюсь выполнить запрос на C#, который суммирует количество просмотров пользователя. Мне возвращается значение NULL. Использование того же оператора в Server Management Studio дает мне правильный результат.Запрос, возвращающий значение NULL
вот мой код:
public static int Count_views(string username)
{
int views = 0;
StringBuilder query = new StringBuilder();
query.Append("SELECT Sum(views) FROM videos WHERE username = @username");
using (SqlConnection con = new SqlConnection(Config.ConnectionString))
{
con.Open();
using (SqlCommand cmd = new SqlCommand(query.ToString(), con))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new SqlParameter("@username", username));
views = Convert.ToInt32(cmd.ExecuteScalar());
}
}
return views;
}
Я отлажена код и параметры являются правильными. Я получаю эту ошибку:
System.InvalidCastException: Object cannot be cast from DBNull to other types.
, что означает, что я получаю нулевое значение взамен.
ConnectionString в порядке. Каждая другая функция работает отлично, за исключением этого. может ли кто-нибудь сказать мне, что может я здесь проблема?
Edit:
Ниже приведены скриншоты, что я встречая. Первый снимок экрана показывает, что значение «Администратор» передается внутри функции. второй снимок экрана показывает, что это значение также находится в базе данных.
Вместо этого вы хотите вернуть 0? http://stackoverflow.com/questions/17048343/my-select-sum-query-returns-null-it-should-return-0 – robaudas
@robaudas Он должен суммировать значения в столбце и возвращать результат. Сумма значений не равна 0, но она дает мне NULL –
ли столбец имени пользователя в таблице видео разрешает null? – Adish