这是登陆窗口的代码
private void button1_Click(object sender, EventArgs e)
        {
            string idnum = AccouTextBox.Text;
            string pas = PassTextBox.Text;
            string sqlstr = "USE gcgl SELECT yhid,yhmm FROM yh WHERE yhid='idnum'and yhmm='pas' ";
            newname.BaseFf baseff = new gogla.BaseFf();
            SqlDataReader sqlread = baseff.getread(sqlstr);            string dd = sqlread.Read().ToString();
            MessageBox.Show(dd);
//这里永远出来的都是  false
            if (sqlread.HasRows)
                MessageBox.Show("登陆成功");            else
            {                MessageBox.Show("账户密码错误,请从新登陆");
                //AccouTextBox.Text = "";
                //PassTextBox.Text = "";
            }有一点我确定 ,数据库一定是连上的。如果我改了上面的SQL语句会报错。
数据库中的表中也是有数据的。账号密码都是12345678
但是输进去都是账户密码错误,请从新登陆。
下面是公共的代码
class BaseFf
    {
            //SqlConnection getcon();//数据库连接函数
            //void DataCz(string Czstr);//执行SQL语句插入,删除。
            //DataSet getData(string comTex,string conn);//执行SQL语句,修改。
            //SqlDataReader getread(string sqlstr);//数据读取        public SqlConnection getcon()
        {
            string connectstr = "Data Source=localhost; Initial Catalog=gcgl;"
            + "Persist Security Info=True; User ID=sa; Password=123456";
            SqlConnection myConn = new SqlConnection(connectstr);            return myConn;        }
        public SqlDataReader getread(string sqlstr)
        {            SqlConnection sqlcon = this.getcon();            SqlCommand sqlcom = new SqlCommand(sqlstr, sqlcon);
            sqlcon.Open();            SqlDataReader sqlreader = sqlcom.ExecuteReader(CommandBehavior.CloseConnection);
       
            return sqlreader;
        }求大家给我看看。

解决方案 »

  1.   


    WHERE yhid='idnum'and yhmm='pas' ;你这里这样写就已经错了,账号永远是idnum,密码永远是pas,当字符串处理了
    用占位符吧!
    string sqlstr =string.Formart( "USE gcgl SELECT yhid,yhmm FROM yh WHERE yhid='{1}'and yhmm='{2}' ",idnum,pas);
      

  2.   


    写错了是 这样的 WHERE yhid='{0}'and yhmm='{1}'  从0开始的
      

  3.   

    string sqlstr = "USE gcgl SELECT yhid,yhmm FROM yh WHERE yhid='idnum'and yhmm='pas' ";出错了 textbox内的值未被引用过来 按照你的方法可以改为
    string sqlstr = "USE gcgl SELECT yhid,yhmm FROM yh WHERE yhid='"+idnum+"'and yhmm='"+pas+"'";
      

  4.   

    跟着你的sql 放在查询分析器里,执行一下呗
      

  5.   

    参数错了,不然就拼接字符串,不然就是找账号为idnum密码为pas的用户
      

  6.   

    string sqlstr =string.Formart( "USE gcgl SELECT yhid,yhmm FROM yh WHERE yhid='{0}'and yhmm='{1}' ",idnum,pas);
      

  7.   

    string sqlstr = "USE gcgl SELECT yhid,yhmm FROM yh WHERE yhid='idnum'and yhmm='pas' ";
    这个错了!这样一直是在找账号为idnum密码pas的用户。当然没有啦!
    用字符串拼接SB或者占位符都可以