数据库类 ADODB 命令记录集 VB6 ADO 文件处理 OPEN






1.50/5 (9投票s)
这是一个数据库对象,我们通过它连接 SQL Server 并进行操作。
引言
这基本上是一个数据库类。在此项目中,我们连接到 SQL Server 2000。我们执行 insert
、update
、delete
和 select
查询。并且无需使用任何数据控件即可填充网格。在此项目中,我还使用了文件处理。
Using the Code
首先,声明类的 private
成员。类的三个成员如下所示:
Private conConnection As New ADODB.connection
Private cmdCommand As New ADODB.Command
Public rstRecordSet As New ADODB.Recordset
ADODB.connection
首先,初始化 adodb 连接。此对象用于连接数据库。
ADODB.Command
其次,初始化命令。此对象用于执行数据库查询。
ADODB.Recordset
第三,初始化
Recordset
。此对象用于多种目的。稍后我会解释。
Public Sub connection()
On Error GoTo err1:
Dim txtserver As String
Dim txtuser As String
Dim txtpassword As String
Dim Filename As String
Filename = "c:\Label.txt"
Open (Filename) For Input As #1
Line Input #1, txtserver
Line Input #1, txtuser
Line Input #1, txtpassword
Close #1
conConnection.ConnectionString = "Driver={SQL Server};
Server=" & txtserver & ";Database=Stock_Management;Uid=" & txtuser & ";Pwd=;"
Exit Sub
err1:
Close #1
Exit Sub
End Sub
此函数建立与 SQL Server 2000 的连接。这是一个受信任的连接,但也可用于非受信任的连接。它是一个用户友好的连接。因此,在此,我使用文件处理,它只需打开文件并读取 server name
、user name
和 password
。
为此目的,我声明了三个变量:txtserver
、txtuser
、txtpassword
。首先,open
对象,以读取模式打开文件,而非写入模式。Line Input #1
读取文件的第一行并将其文本放入 txtserver
。对接下来的两行执行相同操作。并将值保存在接下来的两个变量 txtuser
和 txtpassword
中,然后 close
对象关闭文件。然后,连接到 SQL Server 并退出函数。
Public Function conopen() As Boolean
On Error GoTo err1:
If conConnection.State = 0 Then
connection
conConnection.Open
conopen = True
End If
err1:
If Error <> "" Then
MsgBox "Connect to fail"
conclose
Exit Function
End If
End Function
此函数首先检查连接状态。如果连接已打开,则不执行任何操作。否则,如果连接已关闭,则打开 connection
并返回 true。
注意:要检查连接状态,我使用 connection.State
函数。如果 state
为 one
,表示连接已打开;如果 state
为 zero
,则表示 connection
已关闭。
Public Sub insert_query(query As String)
conopen
With cmdCommand
.ActiveConnection = conConnection.ConnectionString
.CommandText = query
.CommandType = adCmdText
.Execute (query)
End With
End Sub
此函数接受一个查询。Conopen
是我已解释过其工作原理的函数。接下来,它使用 command
对象进行操作。首先,cmdCommand
变量激活连接,然后它获取查询。adCmdText
被传递给 cmdCommand.CommandType
。adCmdText
被评估为文本定义。并且 cmdCommand.execute
执行任何查询,如 insert
、select
、delete
和 update
。
Public Function rstRecordSetOpen()
Call rstRecordSetclose
If rstRecordSet.State = 0 Then
With rstRecordSet
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Open cmdCommand
End With
End If
End Function
此函数打开 RecordSet object
,我们在此处填充数据。首先,它调用 rstRecordSetclose
函数,该函数关闭 RecordSet
对象。不一定需要关闭 RecordSet
。但有时它会引起问题,因此每次填充数据时,我们都必须关闭 RecordSet
。如果您想了解更多关于 Recordset 的信息,请访问该网站。
Function fillcombo(ByRef combo As ComboBox, query As String, field As Integer)
Call conopen
With cmdCommand
.ActiveConnection = conConnection.ConnectionString
.CommandText = query
.CommandType = adCmdText
End With
Call rstRecordSetOpen
If rstRecordSet.EOF = False Then
rstRecordSet.MoveFirst
combo.Clear
Do
combo.AddItem (rstRecordSet.Fields(field))
rstRecordSet.MoveNext
Loop Until rstRecordSet.EOF = True
End If
End Function
此函数填充组合框。此函数接受三个参数。
- 传入组合框的名称
- 传入查询
- 传入一个指定值,例如,您编写了一个查询,如
"Select user_id, User_name from user_table"
。您希望所有姓名都显示在组合框中,那么您传入参数1
,完成后,函数退出。
Function getID(query As String, field As Integer) As Integer
Call conopen
With cmdCommand
.ActiveConnection = conConnection.ConnectionString
.CommandText = query
.CommandType = adCmdText
End With
Call rstRecordSetOpen
If rstRecordSet.EOF = False Then
rstRecordSet.MoveFirst
Dim a As Integer
a = field
Do
a = rstRecordSet.Fields(field)
rstRecordSet.MoveNext
Loop Until rstRecordSet.EOF = True
End If
getID = a
End Function
如果您想获取任何查询的 Id,则调用此函数
Public Function rstRecordSetclose()
Set rstRecordSet = Nothing
End Function
要关闭 recordset
,我们调用此函数
Public Function conclose()
Set conConnection = Nothing
Set cmdCommand = Nothing
End Function
此函数关闭命令以及连接。
以下是使用此对象的一些屏幕截图。
在此,我们创建一个对象并建立连接。我在此处展示了对象如何工作的代码。
Private Sub cmdOK_Click()
Dim a As String
Dim database As New clsDatabase
check
If LoginSucceeded = False Then
Exit Sub
Else
If database.conopen = True Then
a = "SELECT * from tbl_user where (
user_name = '" & txtUserName.Text & "') and (
user_password = '" & txtPassword.Text & "')"
If database.getID(a, 0) <> 0 Then
LoginSucceeded = True
MsgBox "logon sucess full"
End
Else
MsgBox "Invalid Password, try again!", , "Login"
txtPassword.SetFocus
SendKeys "{Home}+{End}"
End If
Else
Unload Me
Set database = Nothing
frmDatabase.Show
Exit Sub
End If
End If
End Sub
这是 cmdOK
按钮的操作。当单击它时,它会创建一个名为 DataBase
的新对象。首先,我们调用 conOpen
函数。如果 connection
已打开,那么我们就执行查询以获取特定行。为此,我们调用 getID
函数。此函数的工作原理是:首先执行查询,然后返回特定行的 ID。并提示成功登录的消息。这是它的屏幕截图。
如果 conConnection
返回 false
,则有两种可能:用户名或密码无效,或者连接未建立。并提示连接失败的消息。如下所示。
如果 database
对象未能连接到 SQL Server 2000。则提示连接失败的消息。当您单击确定时,屏幕上会显示一个窗口。其中包含三个文本框,第一个文本框的标签是 server name
,它会自动检测您的 SQL Server 2000 的服务器名称,如下所示。
然后,您输入用户名和密码(如果需要),否则留空并单击 Test 按钮。
Private Sub btntest_Click()
checkfile
data
If database.conopen = True Then
MsgBox "Connect to successfuly"
Unload Me
frmLogin.Show
Else
MsgBox "Connection fail"
End If
End Sub
当您单击 Test 按钮时。首先,它会转到 checkfile
函数。
Function checkfile()
Dim fName As String
fName = "c:\Label.txt"
Dim oFSO As New FileSystemObject
On Error GoTo ErrorHandler
oFSO.DeleteFile (fName)
ErrorHandler:
On Error Resume Next
Set oFSO = Nothing
End Function
在 checkfile
函数中,首先声明一个名为 fName
的变量。fName
获取文件的路径。然后,我们声明一个名为 oSFO
的 FileSystemObject
对象。它只做一件事:删除文件。然后,它返回到 btnTest
的单击事件。然后,btntest
的单击事件调用另一个函数 Data
。我们来看一下 Data 函数的工作原理。
Function data()
On Error GoTo err1
Open "c:\Label.txt" For Append As #1
Print #1, Me.txtservername
Print #1, Me.txtusername
Print #1, Me.txtpassword
Close #1
If Error <> "" Then
err1:
Close #1
data
Exit Function
End If
End Function
注意:Open
的详细说明
OPEN
的主要功能是将文件号 (filenum&
) 与文件或物理设备关联起来,并为该设备准备读取和/或写入。然后,在每个引用文件的语句中,都使用此文件号而不是文件名。FREEFILE
函数可用于确定下一个可用文件号,或者您可以自己选择一个。OPEN
语句包含有关文件模式的信息;即文件将如何被访问:顺序访问(用于新文件的输入/输出,或现有文件的输出)、随机访问和二进制访问。OPEN
语句通常会有一个匹配的 CLOSE
语句。
Open
函数会打开文件。如果文件不存在,则创建新文件。上面,我们声明了三个变量来存储服务器名称、用户名和密码。print
函数将这些值写入文件,Close
函数关闭文件。
这是 clsDataBase
对象的一些概述。
重要提示:如果您运行此代码,请先将我提供的数据库附加到您的 SQL Server 中。
如果您对此主题有任何问题,请在下面的评论部分留言。