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

关于VB登录连接SQL有关问题,使用了ADODC控件

2014-01-03 
关于VB登录连接SQL问题,使用了ADODC控件Private Sub Command1_Click()Static I As IntegerIf I 3 ThenIf

关于VB登录连接SQL问题,使用了ADODC控件
Private Sub Command1_Click()
Static I As Integer
If I < 3 Then
If Text1.Text = "" Or Text2.Text = "" Then
MsgBox "用户名或密码不能为空", 0 + 16, "确认"
I = I + 1
Text1.SetFocus
Exit Sub
Else
ljsql
rs.Open "select * from 操作员 where 操作员编号 like '%" & Trim(Text1.Text) & "%'", conn, adOpenKeyset, adLockOptimistic
If rs.AbsolutePosition < 0 Then
MsgBox "没有这个用户!"
Text1.Text = ""
Text2.Text = ""
I = I + 1
Exit Sub
End If
If Trim(Text2.Text) = Trim(rs.Fields("密码")) Then
MsgBox "登录成功!", vbOKOnly + vbExclamation, "登录"
图书管理窗口.Show
conn.Close
Exit Sub
Else
MsgBox "密码错误,请重试!"
Text2.Text = ""
I = I + 1
Text2.SetFocus
Exit Sub
End If
End If
Else
MsgBox "你已经登录了三次!不是合法用户."
Command1.Enabled = False
Command2.SetFocus
End If
rs.Close
conn.Close

End Sub
[解决办法]
conn与数据库连接了吗
[解决办法]
这代码让我想起了我第一次写数据库的时候了. 
稍微说一下吧.

MsgBox "用户名或密码不能为空", 0 + 16, "确认"
0和16是啥? 常数要定义, 否则以后自己都不认识了

If Text1.Text = "" Or Text2.Text = "" Then
...
Exit Sub
Else
ljsql
...
你都Exit Sub了,后面的Else毫无意义, 直接End If, 可以简化逻辑.

ljsql 是什么东东? 

select * from 操作员 where 操作员编号 like.....
最好不要(我的意思是永远不要)用中文做数据库字段或变量名之类的. 
如果是为了在列表中显示中文字段名, 可以用其他技巧, 如果你提问, 我就会回答.

If rs.AbsolutePosition < 0 Then
MsgBox "没有这个用户!"
...
If Trim(Text2.Text) = Trim(rs.Fields("密码")) Then
...
MsgBox "密码错误,请重试!"
你这是在给别人猜测用户名的机会啊!  何不将用户名和密码同时查询, 如果匹配的记录为0就告知用户名密码错误?

MsgBox "你已经登录了三次!不是合法用户."
这一句好眼熟, 偶当年也这么干过, 不过后来发现Msgbox实在非常破坏用户体验的一个东西, 用户不得不放下键盘操起鼠标点那么一下(并且往往不会看你显示了什么),然后再放下鼠标回到键盘输入...
So, 在界面上专门放一个Label用来显示你本来想用Msgbox显示的东西吧. 除非致命错误.
至于登录界面, 反正输错了就进不去, Msgbox多此一举.

至于你说的数据库连接问题, 我没看到你打开过conn连接数据库.或许是在你的ljsql过程里面?

热点排行