asp.net数据库与Access的连接

本文关键字:连接 Access net 数据库 asp | 更新日期: 2023-09-27 18:29:18

我想用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中,我有一个带有"username"answers"userpassword"行的表"users"。

asp.net数据库与Access的连接

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

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文件夹。

如果你把mdb文件放在这个文件夹里,你的连接字符串就会变成:

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

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

访问App_Data中的文件时可能遇到的一个常见问题通常与权限有关;您正在运行代码的用户需要在此目录中具有读写权限才能修改mdb文件。这将在MSDN文章的"配置访问数据库的权限"一节中介绍。