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()

c#: SQL不能执行读取

试试SqlParameterCollection。AddWithValue方法代替:

cmd.Parameters.AddWithValue("@felhasznalo", felh);
cmd.Parameters.AddWithValue("@jelszó", jelsz);

我还建议您在SQL对象上使用using语句,以确保它们消耗的非托管资源在不再需要时被释放。您可以从这里阅读更多关于using语句的信息。

我可以建议的另一件事是添加Charset=utf8;到您的连接字符串。