小弟最近研究VB中的ADO控件,做一个简单的管理系统,有个登陆的问题请教大家:
一、数据库已经建好,用sql server2000建立的,里面有一个表user_pwd,其中存储了两列username,pwd,用于存放登陆者的名称和密码,并已插入数据,例:insert into user_pwd values('admin','admin')
二、添加登陆窗体中各个控件,和摸块,应用ActiveX ADO 控件,定义adoCon为adodb.connection;定义adoRs为adodb.recordset
现在的问题是,我想输入一个用户名,然后输入密码,如果和数据库中的数据一致,就显示其他窗体,否则就弹出msgbox "请您先注册",然后注册即更新数据库。。
我的思路是,现在在SQL中查询,然后再判断,二者是否一致,大概的代码如下:
dim strSQL as string
set adoRs =new adocon.recordset
strSQL="select username,pwd from user_pwd where username='"&txtUsername.text&"'"
adoRs=adocon.execute(strSql)
if '===============
  这段怎么写? 怎么引用查询出来的一列里的某个值?adoRs.fields(0)-->这种好像不行,大家指教
'===============
end if
但不知道如何在VB中引用查询后的某行某列的一个数据,比如说,第一行的密码列:admin  怎么引用?

解决方案 »

  1.   

    你那种肯定不行啊,你要用adoRs.fields("pwd")来表示,假如你输密码的text窗体定义为txtPWD
    if adoRs.eof then 
       msgbox "不存在该用户!请注册!"
       你其他的窗体.show
    else
       if Trim(txtPWD) <> adoRs.fields("pwd") then
          msgbox "密码不正确请重新输入!"
          txtPWD.text=""
          txtPWD.setfecus   '具体后面是怎么的搞忘了,反正就是焦点到这里
       end if
    end if第二个问题,这个最好还是通过查询来取数据,如果真的要某行某列的话,我想的是通过设定记录集,for循环的移动movenext,到那里后  记录集.fields("PWD")
    不一定正确哈,只是一个思路,我一般是用查询实现
      

  2.   

    strSQL="select count(*) from user_pwd where username='"&txtUsername.text&"' and pwd='"
     & "password"  & "'"
    adoRs=adocon.execute(strSql)if  adoRs.field(0)=0 then
        '不匹配时的代码   
        ……
        adoRs.close
        end
    endif
    '通过校验后的代码   
    ……