c# Windows窗体应用程序文本框对SQL数据库的验证
本文关键字:SQL 数据库 验证 Windows 窗体 应用程序 文本 | 更新日期: 2023-09-27 18:16:59
我是c#新手,有SQL背景,所以如果这是一个非常愚蠢的查询,我很抱歉,但我已经在谷歌上搜索了大约2个小时,现在找不到我需要的东西。如果有人知道一篇文章,可以指给我看,那就太好了。
我有一个简单的windows窗体应用程序,我正在设置一个登录框,以便用户必须输入他们的用户ID才能继续。
我有一个SQL Server数据库(SQL 2005)与以下表:
用户UserID (int);用户名nvarchar (50)
我使用的是Visual Studio 2010
我的障碍是如何检查他们的userID是否存在于我的SQL表(称为users…)我不打算在这里放任何代码,因为它已经被从零开始重写了很多次,干净的石板可能是最好的!
理想情况下,我希望用户输入他们的用户ID,然后单击"login"。当他们这样做时,如果他们的userID在DB表中无效,那么我需要它给出一个错误msgBox;如果它是有效的,那么它应该登录他们,传递他们的userID和userName(存储在DB表中)到一个变量,我可以在应用程序的其他地方使用填充字段。
我希望这是有意义的,我肯定我错过了完美的文章,将解释这一切-希望你们中的一个善良的人可以指出我在正确的方向!
谢谢
应该使用用户输入的userID执行一个简单的SQL查询,如
从UserID = value的Users中选择UserID。executeNonQuery()将返回匹配次数。如果返回值==1,则表示该用户id在数据库中存在。如果返回值不等于1,则表示该用户id不存在或已注册多次。因此,如果是1那么你可以调用不同的表单来制作不同的东西,否则你调用另一个表单或者输出一个带有错误信息
/*table code
* create table login
(
id varchar(25),
pass varchar(25)
)
*
*
*
*
*/
string Connectstring = @"Data Source=DELL-PC;Initial Catalog=stud;Integrated Security=True";
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection(Connectstring);
cn.Open();
SqlCommand cmd = new SqlCommand("select * from log where id=@a and pass=@b", cn);
cmd.Parameters.AddWithValue("@a", textBox1.Text.ToString().ToUpper());
cmd.Parameters.AddWithValue("@b", textBox2.Text);
SqlDataReader dr = cmd.ExecuteReader();
if ((dr.Read() == true))
{
MessageBox.Show("The user is valid!");
Form2 mainForm = new Form2();
mainForm.Show();
this.Hide();
}
else
{
MessageBox.Show("Invalid username or password!");
}
}
声明到数据库的连接字符串
string connString = @"Data Source=.'SQLEXPRESS;Initial Catalog=YourDatabase;Integrated Security=True";
之后,你可以在
下面使用验证方法private bool ValidateUserById(string connString, int id)
{
using (var conn = new SqlConnection(connString))
{
conn.Open();
var sqlString = string.Format("Select * From Users where Id = {0}", id);
using (var cmd = new SqlCommand(sqlString, conn))
{
return cmd.ExecuteScalar() != null;
}
}
}
然后点击按钮,你可以检查用户
if (ValidateUserById(connString, Convert.ToInt32(textBox1.Text)))
{
//..
}
else
{
//..
}