dim rsUser as Recoreset
Dim user As String, psw As StringWith rsUser
.Index = tbUser.Indexes("PrimaryIndex").Name
.MoveFirst
.Seek "=", user, psw
If .NoMatch Then
MsgBox "请输入正确的用户名及密码"
PassWord.Text = ""
UserName.Text = ""
Exit Sub
End If
End With用Seek函数向数据库中查询所指定的数据是否存在,
在这里数据库中仅有一条记录(为了方便,我就放了一条记录)Username字段=“admin”,Password 字段=“ admin”
我用Seek来根据user和psw来查询数据库中是否有这条记录,但是奇怪的问题发生了,当user="admin",pws="admin"时函数查询成功(符合正常的),当user="Admin",pws="Admin"时函数查询仍然成功(不符合),
当user="Admin ",pws="Admin "时函数查询仍然成功(不符合正常的)
好像Seek函数不区分字符串中的大小写,这是怎么回事呢??困扰我了,呜呜呜,大家给看看一下 啊,小弟感激不尽,谢谢如果我说的不清楚请加我QQ646639655
谢谢啦,各位!!!!!!!!!!!!!
Dim user As String, psw As StringWith rsUser
.Index = tbUser.Indexes("PrimaryIndex").Name
.MoveFirst
.Seek "=", user, psw
If .NoMatch Then
MsgBox "请输入正确的用户名及密码"
PassWord.Text = ""
UserName.Text = ""
Exit Sub
End If
End With用Seek函数向数据库中查询所指定的数据是否存在,
在这里数据库中仅有一条记录(为了方便,我就放了一条记录)Username字段=“admin”,Password 字段=“ admin”
我用Seek来根据user和psw来查询数据库中是否有这条记录,但是奇怪的问题发生了,当user="admin",pws="admin"时函数查询成功(符合正常的),当user="Admin",pws="Admin"时函数查询仍然成功(不符合),
当user="Admin ",pws="Admin "时函数查询仍然成功(不符合正常的)
好像Seek函数不区分字符串中的大小写,这是怎么回事呢??困扰我了,呜呜呜,大家给看看一下 啊,小弟感激不尽,谢谢如果我说的不清楚请加我QQ646639655
谢谢啦,各位!!!!!!!!!!!!!
如果数据库字段是不区分大小写的,查找 "Admin" 当然是匹配的。
如果字段类型是定长文本(比如 SQL Server 的 Char),末尾的空格是不算差异的,所以查找 "Admin " 也是匹配的。
要区分必须在表中加冗余字段。
1)比如:user 对应的冗余字段为 userHex,如果没有中文字段长度是 user 的 2 倍,如果有中文就是 4 倍。
2)保证每次写入 user 字段时都要同时用下面的 StringHex() 函数结果写入 userHex 字段。
比如: user 写入 "admin",userHex 写入 StringHex("admin") 的结果 "61646D696E"
3)改用用 userHex 创建索引,并且用 userHex 进行 Seek
因为分别用 {"amin","Admin","Admin "} 调用 StringHex() 的结果不同 {"61646D696E", "41646D696E", "41646D696E20202020"},只能在完全相等时才匹配。Function StringHex(ByVal str As String) As String
Dim a() As Byte
Dim sHex As String
Dim i As Long
If LenB(str) = 0 Then Exit Function
a = StrConv(str, vbFromUnicode)
sHex = Space((UBound(a) + 1) * 2)
For i = 0 To UBound(a)
Mid$(sHex, i * 2 + 1, 2) = Right$("0" & Hex(a(i)), 2)
Next
StringHex = sHex
End Function
再幫你頂一下吧。