与Access的asp.net数据库连接

时间:2012-03-29 10:34:12

标签: c# asp.net .net ms-access

我想使用asp.net为学校项目创建一个带有Access数据库的登录页面。我没有真正的C#经验所以我正在做不同的教程。

protected void Login1_Click(object sender, EventArgs e)
{
    string connect = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=http://tmti-16.ict-lab.nl/database/ek2012.mdb";
    string query = "Select Count(*) From users Where username = ? And userpassword = ?";
    int result = 0;
    using (OleDbConnection conn = new OleDbConnection(connect))
    {
        using (OleDbCommand cmd = new OleDbCommand(query, conn))
        {
            cmd.Parameters.AddWithValue("", UserName.Text);
            cmd.Parameters.AddWithValue("", Password.Text);
            conn.Open();
            Session["User"] = UserName.Text;
            result = (int)cmd.ExecuteScalar();
        }
    }
    if (result > 0)
    {
        Response.Redirect("index.aspx");
    }
    else
    {
        Literal1.Text = "Invalid credentials";
    }
}

在Access中,我将表''users'包含'username'和'userpassword'行。

1 个答案:

答案 0 :(得分:3)

您遇到的问题几乎肯定与您的连接字符串的数据源段有关:

string connect = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=http://tmti-16.ict-lab.nl/database/ek2012.mdb"

Access mdb文件应位于本地路径上。这可以是您的本地文件系统上运行Web应用程序的帐户的任何位置,因为它有权访问,但实际上,ASP.Net实际上有更好的位置放置这些文件,App_Data folder

如果将mdb文件放在此文件夹中,则连接字符串将变为:

string connect = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|ek2012.mdb"

App_Data文件夹的内容不会提供给客户端,因此这是放置数据的安全位置。使用它也是一个好主意,因为它可以保存项目中的数据;通常,人们会将数据相关文件放在Web根目录之外的文件系统文件夹中,这意味着您在将网站移动到另一台计算机时必须记住这种依赖关系。

访问App_Data中的文件时可能遇到的常见问题通常与权限有关;您正在运行代码的用户将需要此目录中的读写权限才能修改mdb文件。这将在"Configuring Permissions for an Access Database" in this MSDN Article部分中介绍。