0

假设有一个带有 Access 数据库的 Asp.ne5 3.5 Web 应用程序。数据库有两个这样的表:

在此处输入图像描述

在某些页面中,我可以使用“page.users.identity.name”获取用户名。在这个应用程序中,每个用户都可以创建很多页面。我的问题是如何编写语句来获取使用特定用户名(加入的 Group_ID)创建的页面。

注意:这是我尝试过的,我得到“错误读取数据库”。

SELECT Pages.* FROM 
Pages INNER JOIN Users ON Pages.Group_ID = Users.Group_ID
WHERE Users.Username = page.users.identity.name
4

3 回答 3

1

您是否尝试过使用参数化查询:

public ActionResult SomeAction()
{
    // get the username of the currently connected user
    string username = User.Identity.Name;

    string cs = WebConfigurationManager.ConnectionStrings["MyConnStr"].ConnectionString;
    using (var conn = new OleDbConnection(cs))
    using (var cmd = conn.CreateCommand())
    {
        conn.Open();
        var sql = 
            @"SELECT Pages.* FROM Pages 
              INNER JOIN Users 
              ON Pages.Group_ID = Users.Group_ID
              WHERE Users.Username = ?";
        cmd.CommandText = sql;
        cmd.Parameters.AddWithValue("Username", username);
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                ... 
            }
        }
    }

    ...

}
于 2012-10-15T08:32:17.627 回答
0

试试这个查询,

SELECT Pages.* FROM 
Pages,Users where Pages.Group_ID = Users.Group_ID
and Users.Username = page.users.identity.name
于 2012-10-15T08:31:09.390 回答
0

我错过了 page.users.identity.name 语句中的单引号“'”。现在应该是这样的:

昏暗持续为 string="'"

"SELECT Pages.* FROM 
Pages INNER JOIN Users ON Pages.Group_ID = Users.Group_ID
WHERE Users.Username ='" &  page.users.identity.name & lasts
于 2012-10-15T11:05:55.700 回答