数据库MS Access 2007连接到C#ASP.net,登录页面
问题描述:
我有一个包含名为“用户(登录,密码,名字,姓氏)”的表的数据库。我需要制作登录页面。我看过一些教程,但没有帮助。我需要检查数据库中是否存在登录名和密码。然后重定向(如果正确)到其他页面。这是我已经做过的:数据库MS Access 2007连接到C#ASP.net,登录页面
OleDbConnection con = new OleDbConnection();
public bool check()
{
con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Volodia\Documents\WebSiteDatabase.accdb";
con.Open();
string commandstring = "SELECT login,password FROM User";
//objadapter = new SqlDataAdapter(CommandString, sqlconn.ConnectionString);
OleDbDataAdapter objadapter = new OleDbDataAdapter(commandstring, con.ConnectionString);
DataSet dataset = new DataSet();
objadapter.Fill(dataset, "User");// it shows "Syntax error in FROM clause." here
DataTable datatable = dataset.Tables[0];
for (int i = 0; i < datatable.Rows.Count; i++)
{
string unam = datatable.Rows[i]["login"].ToString();
string upwd = datatable.Rows[i]["password"].ToString();
if ((unam == TextBox1.Text)&&(upwd==TextBox2.Text))
{
return true;
}
}
return false;
}
protected void Button1_Click(object sender, EventArgs e)
{
if (check() == true)
{
Response.Redirect("WebForm2.aspx");
}
}
答
PASSWORD这个词是MS-Access Jet SQL的保留关键字。如果你想使用它,你需要把它们放在方括号,同样为用户
string commandstring = "SELECT login, [password] FROM [User]";
这将解决Syntax Error
的迫在眉睫的问题,但让我添加一些其他的代码来显示不同的方法
public bool check()
{
string conString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Volodia\Documents\WebSiteDatabase.accdb";
using(OleDbConnection con = new OleDbConnection(conString)
{
con.Open();
string commandstring = "SELECT count(*) as cntUser FROM [User] " +
"WHERE login = ? AND [password] = ?";
using(OleDbCommand cmd = new OleDbCommand(commandstring, con))
{
cmd.Parameters.AddWithValue("@p1", TextBox1.Text);
cmd.Parameters.AddWithValue("@p2", TextBox2.Text);
int result = (int)cmd.ExecuteScalar();
if(result > 0)
return true;
}
}
return false;
}
- 首先,请不要使用全局连接对象,而应仅在需要时创建并使用连接 。
- 其次,封装像using语句的连接和 命令,以确保正确的关闭 和处置一次性物品,
- 第三,通过用户名和密码作为其中 子句条件(更稍后)
- 四,使用参数化查询,以避免语法错误和SQL注入
通常不是存储在数据库中明文密码的好习惯。你只需要存储密码的哈希值,并重新计算这个哈希每次你需要检查用户的真实性
非常感谢,它解决了我的问题=) – user2362291 2013-05-08 12:36:53
哇,这个代码是更加优化和更好的工作,thx – user2362291 2013-05-08 12:46:24