数据库登录的sql命令问题
本文关键字:命令 问题 sql 登录 数据库 | 更新日期: 2023-09-27 18:28:51
我正试图使用名为"table"的数据库表中的用户名和密码创建一个登录表单。我看了几个视频,看了其他几个页面,似乎无法正确运行查询。我的第二个try/catch块显示消息框"无法运行查询"。有人能看一下我的代码,看看哪里出了问题吗?谢谢。
SqlConnection con = new SqlConnection();
string connectionString = @"Data Source=(LocalDB)'v11.0;AttachDbFilename=C:'Users'Donovan'Documents'Work'Time Clock program'Time Clock program1.2'Time Clock program'Database1.mdf;Integrated Security=True;Connect Timeout=30;";
string query = "SELECT Count(*) FROM [Table] WHERE Username='" + usernameTextBox.Text +
"' AND Password = '" + this.passwordTextBox.Text + "'";
try
{
con = new SqlConnection(connectionString);
}
catch(Exception ex)
{
MessageBox.Show("Could not connect to Database");
MessageBox.Show(ex.Message);
}
try
{
if (!(usernameTextBox.Text == string.Empty))
{
if (!(passwordTextBox.Text == string.Empty))
{
SqlCommand cmd = new SqlCommand(query, con);
SqlDataReader dbr;
con.Open();
dbr = cmd.ExecuteReader();
int count = 0;
while (dbr.Read())
{
count = count + 1;
}
if (count == 1)
{
MessageBox.Show("username and password is correct");
}
else if (count > 1)
{
MessageBox.Show("Duplicate username and password", "login page");
}
else
{
MessageBox.Show(" username and password incorrect", "login page");
}
}
else
{
MessageBox.Show(" password empty", "login page");
}
}
else
{
MessageBox.Show(" username empty", "login page");
}
// con.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
My money is for Table
是TSQL中的保留关键字。您可能需要将其与[Table]
一起使用。更好的方法是,将表名更改为非保留字。
但更重要的是,您应该始终使用参数化查询。这种字符串串联对SQL注入攻击是开放的。
不要将密码存储为纯文本。读取在数据库中存储密码的最佳方式
使用using
语句自动处理连接和命令,而不是手动调用Close
或Dispose
方法。
顺便说一句,我强烈怀疑你可能想把SELECT COUNT(*)..
和ExecuteScalar
方法一起使用,因为你对其他事情什么都不做。