在数据库中以Augus的登陆名创建了一个QQDB数据库,编写C#程序访问该数据库,第一步进行用户名和密码验证总是不能通过,用户名和密码绝对没有输错,因为在SQL Server2008上可以用这个用户名和密码登陆并操作,只是在C#程序中连接数据库通不过验证.相关代码如下:
这是验证登录名和密码的方法
public bool CheckAdminInfo(string adminName, string passWord, ref int flag)//flag做标识位,1表示访问数据库异常
        {
            SqlConnection conn = new SqlConnection(strCon);//建立与数据库的连接,字符串strCon已定义好
            try
            {
                //拼接T-SQL字符串
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("select count(*)");
                sb.AppendLine("from Admin");
                sb.AppendLine("where LoginId='" + adminName + "' and LoginPwd='" + passWord + "'");
                conn.Open();
                SqlCommand comm = new SqlCommand(sb.ToString(), conn);                int commReturn = (int)comm.ExecuteScalar();
                if (commReturn != 1)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            catch (Exception)
            {
                flag = 1;//访问数据库异常,flag置为1
                return false;
            }
            finally
            {
                conn.Close();
            }
        }用以下代码调用上面的方法,返回值总是false,用户名密码绝对没有输错!
            Console.WriteLine("请输入用户名:");
            string userName = Console.ReadLine();
            Console.WriteLine("请输入密码:");
            string password = Console.ReadLine();
            if (userName.Equals(string.Empty)||password.Equals(string.Empty))
            {
                return false;
            }
            else
            {
                return _dbHandle.CheckAdminInfo(userName,password,ref _flag);
            }菜鸟求帮助,求解释%>_<%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    下断点跟踪啊,
     if (userName.Equals(string.Empty)||password.Equals(string.Empty))
      {
      return false;
      }
    不会是进入这里return false了吧。
    还有你是console程序?要从cmd下输入用户名和密码?
      

  2.   

    请注意,登录sqlserver和你登陆软件的用户是否同一个用户,比如登录sqlserver是sa,那么你的软件登录也是sa吗既然是sql查询,那就把sb的内容show出来,看看完整的sql是什么,放到查询分析器中看看是否选出数据,看看Admin表中是否有这个用户还有 sb添加内容,注意空格,你添加的三条语句之间没有空格,成了
    select count(*)from adminwhere xxxx
      

  3.   


    +1 要注意sql语句中的空格和引号是否使用正确
      

  4.   

    是的,控制台应用程序,在cmd窗口下输入用户名密码.
      

  5.   

    登陆sqlserever用的是Augus,你说的软件指的是什么,vs吗?登陆vs不需要登录名和密码呀?另外应该不是空格的问题,我用的连接字符串的方法是AppendLine(),这个方法相当于在句末加了一个回车,所以连接后的字符串应该是:
    select count(*)
    from Admin
    where LoginId=' adminName ' and LoginPwd=' passWord '
    也就是中间分行的,而不是你们说的连着的.
      

  6.   

    刚才用调试了一下,执行这条语句
    int commReturn = (int)comm.ExecuteScalar();
    返回的总是0
    也就是数据库系统表中没有找到与我输入的用户名和密码对应的信息
    这我就糊涂了
    明明用这个用户名和密码是可以登陆数据库并且增删改查的,而且连接的这个数据库还是我以这个用户名登陆建立的,晕了......