【问题标题】:connect to Access database in asp.net and Join statement在 asp.net 和 Join 语句中连接到 Access 数据库
【发布时间】:2012-10-15 08:04:16
【问题描述】:
假设有一个带有 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
【问题讨论】:
标签:
asp.net
.net
asp.net-mvc
ms-access
【解决方案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())
{
...
}
}
}
...
}
【解决方案2】:
试试这个查询,
SELECT Pages.* FROM
Pages,Users where Pages.Group_ID = Users.Group_ID
and Users.Username = page.users.identity.name
【解决方案3】:
我错过了 page.users.identity.name 语句中的单引号“'”。现在应该是这样的:
dim lasts as string="'"
"SELECT Pages.* FROM
Pages INNER JOIN Users ON Pages.Group_ID = Users.Group_ID
WHERE Users.Username ='" & page.users.identity.name & lasts