发生SQLException

时间:2016-01-06 21:48:39

标签: c# c++ sql

有人可以解释我的程序有什么问题吗? 只是想制作一个简单的登录程序,因为我是初学者,但坚持这个错误。

SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Umer\Documents\Data.mdf;Integra‌​ted Security=True;Connect Timeout=30;");
SqlDataAdapter sda = new SqlDataAdapter("Select Count (*) From dbo.Table where Username='" + textBox1.Text + "'and password ='" + textBox2.Text + "'", con);
DataTable dt = new DataTable();
sda.Fill(dt);

问题出在sda.Fill(dt);。它说:

  

发生SqlException关键字'Table'

附近的语法不正确

它说SqlException发生关键字'Table'附近的语法不正确 这是我的代码的图片。希望我会得到答案。感谢

2 个答案:

答案 0 :(得分:2)

单个cuote与'和'之间缺少空间。关键字

... textBox1.Text +"'和...

BTW,为了避免SQL注入(以及包含引号的密码中的应用程序错误),您还应该使用Mike Schmidt建议的参数。

答案 1 :(得分:1)

这假设您在引用的sql数据库中有正确的表。 表名是“表”,它有两列“用户名”和“密码”

评论

  1. 您的Sql语句将返回具有匹配用户名和密码的行数。
  2. 传递这样的参数是危险的,并且受隐藏的sql使用sqlParameter类
  3. 你应该打破参数,以便于阅读。

    String ConnectionString = @"DataSource=LocalDB)\v11.0;AttachDbFilename=C:\Users\Umer\Documents\Data.mdf;Integra‌​ted Security=True;Connect Timeout=30;";
    String QueryString = @"Select Count (*) From dbo.Table where Username= @Username and Password = @Password";
    
     SqlParameter[] Parameters = {new SqlParameter("Username",textBox1.text)
                                 ,new SqlParameter("Password",textBox2.text)};
    
    
     SqlConnection sqlConnection = new SqlConnection(ConnectionString);
     SqlCommand sqlCommand = new SqlCommand(QueryString, sqlConnection);
     sqlCommand.CommandType = System.Data.CommandType.Text;
    
     sqlCommand.Parameters.AddRange(Parameters);
    
     int nCount;
     if (int.TryParse(sqlCommand.ExecuteScalar().ToString(), out nCount))
     {
         //nCount has valid value
     }
     else
     {
         //nCount has invalid value
     }