首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

为甚rs.RecordCount=-1,请看一眼

2012-06-13 
为甚rs.RecordCount-1,大虾请看一眼!我在数据库里单独查询select user fromusers whereuser zhangyong

为甚rs.RecordCount=-1,大虾请看一眼!
我在数据库里单独查询'select user from users where user ="zhangyongxing"有一条记录,没问题。
可程序里一运行就是rs.RecordCount=-1,百思不得其解,大虾们请指点一下下,不甚感激!!
(userlogon 在模块里当作全局变量,Public userlogon As String)
代码如下:

Private Sub 按ID查找_Click()

'============================================================
'验证用户身份
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=192.168.1.102; DATABASE=yaf;UID=root;PWD=root; OPTION=3"
cn.Open

'MsgBox "form2按ID查找userlogon2=123" & userlogon & "123"
'这里输出没问题:form2按ID查找userlogon2=123zhangyongxing123
sql1 = "select user from users where user ='" & userlogon & "'"
'select user from users where user ="zhangyongxing"
rs.Open sql1, cn, 3, 3

'MsgBox "rs.Fields.Count=" & rs.Fields.Count
MsgBox "rs.RecordCount=" & rs.RecordCount
If rs.RecordCount <= 0 Then
MsgBox ("请先登录1!")
'Unload Me
Else
If rs.Fields(0) = "zhangxinyu" Or rs.Fields(0) = "zhangyongxing" Then
  MsgBox ("身份验证成功!")
  Form5.Show
Else
  Dim a
  a = MsgBox("请先登录!")
  'Unload Me
End If
End If
'============================================================

End Sub

[解决办法]
-1 表示记录数不确定。

要确定记录数,需要两个条件:

1 使用客户端游标。

rs.CursorLocation = adUseClient 

缺省条件下,是使用服务端游标的。也就是说,查询出的记录集数据保存在服务端。为了减少网络流量,只传送当前记录或几条记录。

2 记录较多时,必须遍历记录

rs.MoveLast
rs.MoveFirst

此时,才能确定得到了记录集的记录数。

不过,有排序关键字的查询,就不必这样做。因为数据库引擎已经遍历过了。

热点排行