C#:SQL无法执行读取

时间:2014-03-08 15:58:23

标签: c# sql sql-server

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

1 个答案:

答案 0 :(得分:0)

请尝试SqlParameterCollection.AddWithValue Method

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

我还建议您在using个对象上使用SQL语句,以确保在不再需要时释放他们使用的非托管资源。您可以在here上的using声明中详细了解。

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