使用访问数据库的登录表单

本文关键字:登录 表单 数据库 访问 | 更新日期: 2023-09-27 18:19:25

try
{
    OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=  C:'Users'jay.desai'Documents'Visual Studio 2008'Projects'Jahoo Sign in form!'Jahoo Sign in form!'Registration_form.mdb");
    con.Open();
    OleDbCommand cmd = new OleDbCommand("select * from Login where Username='"+txtlognUsrnm.Text+"' and Password='"+txtlognpswrd+"'", con);
    OleDbDataReader dr = cmd.ExecuteReader();
    if(dr.Read() == true)
    {
        MessageBox.Show("Login Successful");
    }
    else
    {
        MessageBox.Show("Invalid Credentials, Please Re-Enter");
    }
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());
}

我已经创建了一个登录表单和一个表在微软访问,其中包含用户名和密码字段。当我点击登录按钮时,它总是显示else消息,尽管用户名和密码与表中相同

使用访问数据库的登录表单

PASSWORD是access-jet中的保留关键字。你需要把它封装在方括号里。

OleDbCommand cmd = new OleDbCommand("select * from Login where Username=" + 
                       "? and [Password]=?", con);

也不要使用字符串连接来构建sql命令,而是使用参数化查询

上面的代码中还有其他问题。
首先尝试使用using语句来确保连接和其他一次性对象被正确关闭和处置。
其次,如果您只需要检查登录凭据,那么就不需要返回整个记录,您可以使用ExecuteScalar方法来避免OleDbDataReader对象

string constring = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=  C:'Users'jay.desai'Documents'Visual Studio 2008'Projects'Jahoo Sign in form!'Jahoo Sign in form!'Registration_form.mdb";
string cmdText = "select Count(*) from Login where Username=? and [Password]=?"
using(OleDbConnection con = new OleDbConnection(constring))
using(OleDbCommand cmd = new OleDbCommand(cmdText, con))
{
     con.Open();
     cmd.Parameters.AddWithValue("@p1", txtlognUsrnm.Text);
     cmd.Parameters.AddWithValue("@p2", txtlognpswrd.Text);  // <- is this a variable or a textbox?
     int result = (int)cmd.ExecuteScalar()
     if(result > 0)
          MessageBox.Show("Login Successful");
     else
         MessageBox.Show("Invalid Credentials, Please Re-Enter");
}