我从Somee订购了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()
答案 0 :(得分:0)
请尝试SqlParameterCollection.AddWithValue Method:
cmd.Parameters.AddWithValue("@felhasznalo", felh);
cmd.Parameters.AddWithValue("@jelszó", jelsz);
我还建议您在using
个对象上使用SQL
语句,以确保在不再需要时释放他们使用的非托管资源。您可以在here上的using
声明中详细了解。
我可以建议的另一件事是将Charset=utf8;
添加到您的连接字符串中。