我在用C#进行数据库查询时,如果这样的话    
 SqlCommand cmd =
                new SqlCommand("SELECT COUNT(*)FROM UserInfo WHERE UserName=" +
                this.txtUserName.Text +
                " and Pwd=" +            
                this.txtPassWord.Text,
                conn);
为什么就会提示我输入的列名无效但是改成这样      
           StringBuilder sb = new StringBuilder();
            sb.AppendFormat("SELECT COUNT(*)FROM UserInfo WHERE UserName='{0}' and Pwd='{1}'", this.txtUserName.Text, this.txtPassWord.Text);
SqlCommand cmd =
                new SqlCommand(sb.ToString(),conn);就可以了。
这是怎么回事?哪位大侠帮忙解释一下

解决方案 »

  1.   

    "SELECT COUNT(*) FROM UserInfo WHERE UserName='"+this.txtUserName.Text+ "' and Pwd='" +this.txtPassWord.Text+"'"
    字符型要加'
      

  2.   

    字符型的常数前后加单引号' 'format 是格式化方法 直接识别成字符了.
      

  3.   

    单引号的问题了,书写SQL语句的时候一定要非常仔细才行,否则会出现意想不到的错误。另外建议你写完SQL语句后,在此处打上一个断点,然后运行到此后查看以下,生成的SQL语句是不是符合语法。如果不确定,可以将生成后SQL语句复制到查询分析器中执行一次,有什么问题很快就可以发现了。这是我常用的方法。或者在执行SQL语句的代码中协商try catch语句,然后有错误的时候弹出提示,也可以很快排除这种错误的。
      

  4.   

    呵呵,拼接字符串 '"++"'
    楼上的讲的很好。
    先打个断点
    然后copy sql语句去企业管理器中运行一下
      

  5.   

      new SqlCommand("SELECT COUNT(*)FROM UserInfo WHERE UserName=" +
                    this.txtUserName.Text +
                    " and Pwd=" +           
                    this.txtPassWord.Text,
                    conn); 
    附加一句count(*)后边没有空格