c#: SQL不能执行读取
本文关键字:执行 读取 不能 SQL | 更新日期: 2023-09-27 17:49:13
我已经从某人订购了SQL Server。我想使用这个SQL Server为我的windows窗体。不知何故,我不确定,但每当我执行登录查询我发现了什么,它会有一个未处理的异常。
private void log_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "workstation id=wbhandler.mssql.somee.com;packet size=4096;user id=acc;pwd=pw;data source=wbhandler.mssql.somee.com;persist security info=False;initial catalog=wbhandler";
con.Open();
string felh = username.Text;
string jelsz = password.Text;
string query = "SELECT * FROM accounts WHERE account=@felhasznalo AND password=@jelszó";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.Add(new SqlParameter("@felhasznalo", felh));
cmd.Parameters.Add(new SqlParameter("@jelszó", jelsz));
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows == true )
{
MessageBox.Show("Succes");
}
else
{
MessageBox.Show("Failed");
}
}
我以为地址是错的,但后来我在网站上找到了连接字符串,现在我真的不知道了。
我在想问题出在哪里。我在sql中有3个方案:Dbo, acc, guest首先在dbo中创建了一个表,然后在acc中创建了一个表。现在在这两个地方。但遗憾的是,它没有执行SqlDataReader dr = cmd.ExecuteReader();
。如我所说,它有未处理的异常。有解决方案吗?什么好主意吗?
(acc格式是我在某处创建的一个例子,所以它不存在,它是假的)
我也试过这样做:
using (var dr = cmd.ExecuteReader())
{
if (dr.HasRows)
{
MessageBox.Show("Sikeres Login!");
}
else
{
MessageBox.Show("Sikertelen Login");
}
}
问题总是在于ExecuteReader()
试试SqlParameterCollection。AddWithValue方法代替:
cmd.Parameters.AddWithValue("@felhasznalo", felh);
cmd.Parameters.AddWithValue("@jelszó", jelsz);
我还建议您在SQL
对象上使用using
语句,以确保它们消耗的非托管资源在不再需要时被释放。您可以从这里阅读更多关于using
语句的信息。
我可以建议的另一件事是添加Charset=utf8;
到您的连接字符串。