检查表中未读消息的数量?

时间:2012-05-15 09:39:41

标签: c# sql database razor webmatrix

我之前已经这样做了,但这次它没有用。

我要做的就是COUNT()表格中有未读消息的数量。

表格def:

UserId(int), From(int), Type(nvarchar), Message(nvarchar), Read(bit)

阅读和UserId列是我试图检查的内容。我尝试了以下内容:

 database.QuerySingle("SELECT COUNT(*) AS NumberOfNotifications FROM Notifications WHERE UserId = @0 AND Read = CONVERT(bit,0)", userid);

我还尝试了许多其他版本,但结果总是如此。我总是收到以下错误:

  '/'应用程序中的服务器错误。      

关键字“读取”附近的语法不正确。描述:未处理   在执行当前Web请求期间发生异常。   请查看堆栈跟踪以获取有关错误的更多信息   它起源于代码。

     

异常详细信息:System.Data.SqlClient.SqlException:不正确   关键字“Read”附近的语法。

我想做的是这样的: “在USERID = @ 0且读取=错误的情况下获取通知信息的数量不明显”

任何帮助都表示赞赏!

谢谢

已更新

以下是我遇到问题的帮助程序的完整代码。现在我已经修复了错误,我不知道为什么当我登录时它没有显示“你有新通知消息” - 相应表格中有4行。

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

    var DisplayName = "";
    if(notifications["NumberOfNotifications"] < 1)
    {
        DisplayName = name["FirstName"] + " " + name["LastName"];
    }
    else
    {
        DisplayName = name["FirstName"] + ", you have " + notifications["NumberOfNotifications"] + " 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();
}

2 个答案:

答案 0 :(得分:4)

尝试在read ===&gt;周围放置方括号[Read]

答案 1 :(得分:1)

您的错误表明READ是关键字。它正在解释一个命令,或类似的,而不是字段名称。

不同版本的SQL可以将字段名称括在不同的标记中以防止这种混淆。例如,SQL Server将使用[Read],MySQL使用反引号,例如`Read`