文章目录
- 1.定义ConnectString方法
- 2.定义ExecuteSQL方法
- 3.查询用户名是否存在(1)
- 4.查询用户名是否存在(2)
- 5.查询输入的密码是否正确
- 总结
1.定义ConnectString方法
学生信息管理系这个项目首先要与SQL server进行连接,语句如下:
Public Function ConnectString() As String
ConnectString = "fileDSN=studentinfo.dsn;UID=sa;PWD=123456"
'一个SQL语句,目的在于建立与SQL的连接'
End Function
vb与数据库的连接时,需要建立一个文件的DSN,建立流程看我之前的博文:学生信息管理系统问题调试。
studentinfo.dsn就是建立连接时设置的数据源名称。
UID=sa;PWD=123456是用户登录连接SQL server的账号和密码。
2.定义ExecuteSQL方法
建立连接后,要想向数据库查询想要的数据,需要先定义一个执行方法:ExecuteSQL
'方法ExecuteSQL定义为ADODB.Recordset类型,SQL和MsgString是它的两个参数,'
'使用方法为:ExecuteSQL(SQL,MsgString)'
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
'如果遇到错误就跳转到错误处理代码'
On Error GoTo ExecuteSQL_Error
'Split把SQL分割成一个一个的字符串,并按序排号'
sTokens = Split(SQL)
Set cnn = New ADODB.Connection'实例化cnn为一个ADODB.Connection对象'
cnn.Open ConnectString '使用ConnectString方法'
'instr函数为字符查找函数,其功能是查找一个字符串在另一个字符串中首次出现的位置'
'Ucase$(sTokens(0)) 将所有的英文字符转换成大写字母,方便查找是否包含"INSERT,DELETE,UPDATE"'
If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
cnn.Execute SQL
MsgString = sTokens(0) & " query successful"
'虽然MsgString不是返回值,但传递方式是ByRef,实参地址和这个地址相同
Else
Set rst = New ADODB.Recordset '实例化rst为一个ADODB.Recordset对象'
'得到含有用户名和密码的临时表,游标指向第一条记录'
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & " 条记录 "
End If
ExecuteSQL_Exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
ExecuteSQL_Error:
MsgString = "查询错误: " & Err.Description
Resume ExecuteSQL_Exit
End Function
3.查询用户名是否存在(1)
方法定义完了,开始在user数据库的info表中查找所有满足user_ID=txtUserName.Text条件的值,并赋给txtSQL,没有则显示NULL。
txtUserName.Text:登陆时用户输入的用户名
user_ID:是数据库中记录用户名那一列的名字
txtSQL = "select * from user_Info where user_ID = '" & txtUserName.Text & "'"
- 1.单引号是干啥使的?
答:单引号和双引号的作用几乎是一样的,起引用作用,只不过一个运用在数据库,一个运用在VB。比如:
text1.text=“你好” [VB中]
text1.text=‘你好’ [数据库中] - 2.首先把txtSQL看作是A
A="select * from student_Info where student_ID = '" & txtUserName.Text & "'"
然后把双引号中的内容分作两个部分,用a,b代替
a=select * from student_Info where student_ID = '
b='
那么,A = "a" & txtUserName.Text & "b"
4.查询用户名是否存在(2)
mrc已经实例化,包含了ExecuteSQL内的参数,可以用来查询用户名和密码是否正确。
Dim mrc As ADODB.Recordset
Set mrc = ExecuteSQL(txtSQL, MsgText) '在第3步,txtSQL已经被赋予了值'
If mrc.EOF Then ……
'mrc.EOF=False,说明记录集游标不在结尾,用户名存在,下一步查询密码是否正确'
'mrc.EOF=True,说明记录集游标已经在结尾了,用户名不存在,无法登陆,提示用户"用户名不存在"'
5.查询输入的密码是否正确
txtPassword.Text:登陆时用户输入的用户名密码
Trim(mrc.Fields(1)) = Trim(txtPassword.Text)
'mrc记录集的字段(0)是用户名,字段(1)就是这个用户名的密码'
'OK = True,说明密码正确,可以成功登陆跳转下一个窗体'
'OK = False,说明密码不正确,无法登陆,提示用户"密码不正确"'
总结
在使用VB语言连接SQL Server进行用户名和密码验证的流程中,细心和认真是非常重要的。
首先,连接数据库是整个流程的核心步骤。在创建连接字符串时,需要确保提供正确的SQL Server实例和数据库名称,以及适当的身份验证方式。细心地检查和验证连接字符串的准确性可以避免连接失败或连接到错误的数据库。
其次,创建SqlCommand对象时,需要确保查询语句的准确性和完整性。仔细编写SQL语句以检索用户名和密码的信息,确保语法正确,并考虑到可能的边界情况和异常情况。对于涉及用户输入的查询语句,要注意防止SQL注入攻击,使用参数化查询或其他安全措施来保护数据库的安全性。
使用VB语言连接SQL Server进行用户名和密码验证的流程需要细心和认真对待。仔细处理连接、查询、异常处理和结果验证等步骤,可以确保程序的正确性、安全性和可靠性。通过细致入微的处理,可以提高代码的质量和用户体验,同时保护数据库和用户的数据安全。