检查表中的未读邮件数

本文关键字:检查表 | 更新日期: 2023-09-27 18:34:22

我以前做过这个,但这次它只是不起作用。

我试图做的只是 COUNT(( 表中未读消息的数量。

表定义:

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.Sql异常:不正确 关键字"读取"附近的语法。

我想做的是:"获取通知表中的未读消息数,其中用户 ID = @0 且读取 = FALSE">

任何帮助都非常感谢!

谢谢

更新

以下是我遇到问题的帮助程序的完整代码。现在我已经修复了错误,我不知道为什么当我登录时它没有显示"您有新的通知消息" - 相应的表中有 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();
}

检查表中的未读邮件数

尝试在read===周围加上方括号> [Read]

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

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