[英]Database MS Access 2007 connection to C# ASP.net , login page
我有一個數據庫,其中包含一個名為“ User(login,password,firstname,lastname)”的表。 而且我需要登錄頁面。 我看了一些教程,但是沒有幫助。 我需要檢查數據庫中是否存在登錄名和密碼。 然后重定向(如果正確)到其他頁面。 這是我已經做過的:
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");
}
}
密碼一詞是MS-Access Jet SQL的保留關鍵字。 如果要使用它,則需要將其用方括號括起來,與USER相同
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;
}
將密碼以明文形式存儲在數據庫中通常不是一個好習慣。 您只需要存儲密碼的哈希,並在每次需要檢查用戶真實性時重新計算此哈希
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.