2012-05-15 2 views
0

Я пытаюсь подсчитать количество непрочитанных сообщений в моей таблице БД, но это очень сложно. Я даже читал учебники онлайн, но безрезультатно.Как подсчитать количество строк в базе данных SQL Server?

То, что я делаю, должно быть простым.

Вот что я пытаюсь сделать:

COUNT NUMBER OF ROWS IN NOTIFICATIONSTABLE 
WHERE USERID = @0 AND MESSAGEWASREAD = FALSE 

Может кто-нибудь пожалуйста, мне точку в правильном направлении? Любая помощь будет оценена.

Спасибо

@helper RetrievePhotoWithName(int userid) 
{ 
    var database = Database.Open("SC"); 
    var name = database.QuerySingle("select FirstName, LastName, ProfilePicture from UserProfile where UserId = @0", userid); 
    var notifications = database.Query("SELECT COUNT(*) as 'counter' FROM Notifications WHERE UserID = @0 AND [Read] = @1", userid, false); 

var DisplayName = ""; 
if(notifications["counter"] < 1) 
{ 
    DisplayName = name["FirstName"] + " " + name["LastName"]; 
} 
else 
{ 
    DisplayName = name["FirstName"] + ", you have " + notifications["counter"] + " new messages."; 
} 
<a href="@Href("~/Home")" title="My Account"><img src="@Href("~/Shared/Assets/Images/" + name["ProfilePicture"] + ".png")" id="MiniProfilePicture" />&nbsp;@DisplayName</a> 

database.Close(); 

}

ответ

8
SELECT COUNT(*) FROM NotificationsTable WHERE 
UserID = @UserID AND MessageWasRead = 0; 

Sql Count Function

Хорошо, так это основано на том, что я думаю, что должно быть сделано. Я не знаю базовых типов, поэтому это будет мое лучшее предположение.

var notifications = database.QuerySingle("Select COUNT(*) as NumRecs...."); 

if((int)notifications["NumRecs"] > 0)) ....... 

Я изменил запрос на уведомления в QuerySingle. Вам не нужно записывать, вам нужно всего лишь скалярное значение, поэтому вы должны (надеюсь, удалить вашу проблему с неявным преобразованием в равных вам значениях.

Я также проверил бы, будет ли ваш объект базы данных IDisposable (поместите его в оператор using, если это так) по мере того, как вы вызываете close, и на самом деле это не вызовет закрытие (я знаю, что оно не утилизируется, но оно может также быть утилизировано), если вы сталкиваетесь и исключаете до вызова функции закрытия.

+1

достаточно просто :) – Eon

+0

Спасибо Кевину :-) – shane

+0

Я был ранее с помощью: 'SELECT COUNT (*) AS NumberOfNotifications ИЗ уведомлениях ГДЕ USERID = @ 0 и [Read] = @ 1" , USERID, Fals e' однако, что вызвало у меня столько проблем, я думал, что у меня случился сердечный приступ – shane

0
int unreadMessageCount = db.Query("SELECT * FROM Notification WHERE [email protected] AND [email protected]",UserId,false).Count(); 

string displayname = name["FirstName"] + " " + name["LastName"] + unreadMessageCount>0?",you have " + unreadMessageCount :""; 
Смежные вопросы