0

Access データベースを備えた Asp.ne5 3.5 Web アプリケーションがあるとします。データベースには、次のような 2 つのテーブルがあります。

ここに画像の説明を入力

一部のページでは、「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のステートメントで一重引用符"'"を見逃しました。これで、次のようになります。

dimは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 に答える