c#数据库登录表单
本文关键字:表单 登录 数据库 | 更新日期: 2023-09-27 18:14:05
我想在Visual Studio 2010(使用Visual c#)上创建一个注册和登录表单。
我已经创建了基于服务的数据库和一个表。我可以在表中插入数据(在注册表单中),但我不知道如何登录用户。
我有一个非常简单的登录表单(只是字段的用户名和密码)和一个"登录"按钮。我真的不知道如何检查密码和用户名(存在于我的数据库中)是否匹配。以下是目前为止的内容:
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text != "" & textBox2.Text != "")
{
cn.Open(); // cn is the Sqlconnection
cmd.Parameters.AddWithValue("@Username", textBox1.Text); // cmd is SqlCommand
cmd.Parameters.AddWithValue("@Password", textBox2.Text);
if (cmd.CommandText == "SELECT * FROM Table1 WHERE username = @Username AND password = @Password")
{
MessageBox.Show("Loggen In!");
this.Close();
}
cn.Close();
}
}
您需要执行查询以知道该信息是否存在于数据库
if (textBox1.Text != "" & textBox2.Text != "")
{
string queryText = @"SELECT Count(*) FROM Table1
WHERE username = @Username AND password = @Password";
using(SqlConnection cn = new SqlConnection("your_connection_string"))
using(SqlCommand cmd = new SqlCommand(queryText, cn))
{
cn.Open();
cmd.Parameters.AddWithValue("@Username", textBox1.Text);
cmd.Parameters.AddWithValue("@Password", textBox2.Text);
int result = (int)cmd.ExecuteScalar();
if (result > 0)
MessageBox.Show("Loggen In!");
else
MessageBox.Show("User Not Found!");
}
}
我也修改了你的代码。
- 将查询文本更改为只返回具有的用户的计数指定的用户名和帐户,并能够使用ExecuteScalar
- 在using中包含SqlConnection和SqlCommand的创建语句的末尾处理这些对象操作
我还建议您更改存储密码的方式。
在密码字段中存储一个散列,而不是明确的密码。然后将相同的散列传递给数据库,并将其与数据库字段的内容进行比较。
这样,密码只有您的用户知道,您或任何查看数据库表
SqlConnection con = new SqlConnection("connection_string");
SqlCommand cmd = new SqlCommand("select Count(*) from [dbo].[Table] where uname=@uname and password=@password");
cmd.Connection = con;
con.Open();
cmd.Parameters.AddWithValue("@uname", uname.Text);
cmd.Parameters.AddWithValue("@password", password.Text);
int Result=(int)cmd.ExecuteScalar();
if (Result > 0)
{
Response.Redirect("welcome.aspx");
}
else
{
Response.Redirect("register.aspx");
}