2012-10-15 112 views
0

假設有一個帶Access數據庫的Asp.ne5 3.5 Web應用程序。該數據庫有兩個表是這樣的:連接到asp.net中的Access數據庫並加入語句

enter image description here

在一些網頁我可以用'「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 

回答

0

我在page.users聲明錯過了單引號 「」」。 identity.name。現在這個應該是這樣的:

暗淡持續爲字符串= 「」「

"SELECT Pages.* FROM 
Pages INNER JOIN Users ON Pages.Group_ID = Users.Group_ID 
WHERE Users.Username ='" & page.users.identity.name & lasts 
0

與此查詢嘗試,

SELECT Pages.* FROM 
Pages,Users where Pages.Group_ID = Users.Group_ID 
and Users.Username = page.users.identity.name 
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()) 
      { 
       ... 
      } 
     } 
    } 

    ... 

}