VB语言使用ADO连接、操作SQLServer数据库教程
VisualBasic通过ADO连接SQLServer数据库需添加微软ADO数据控件,掌握连接对象建立连接、记录集对象操作数据。提供了完整的代码示例,实现连接、断开、执行SQL语句及数据查询功能,并利用连接计数器优化频繁操作性能,提高了效率。
几年前学过的VB几乎忘光了,最近重新复习了一下。发现VB连接ADO数据库这件事,走通了其实并不难,关键在于理清每一步的操作顺序。下面把整个过程掰开揉碎来讲,希望能帮到刚入门的朋友。
连接第一步(要仔细看)
对新手来说,最容易卡住的地方就是添加控件。第一步需要添加一个部件,全称是Microsoft ADO Data Control 6.0 (SP6) (OLEDB)。在这个部件里有一个叫Adodc的数据控件,把它拖到窗体上,然后在属性里找到数据源,选择ACCES(Access文件)即可。注意,如果看不到这个控件,记得先去部件对话框里勾选它。

接下来看一段引用代码,用来把数据库中的值添加到下拉框中:
For i = 1 To Adodc1.Recordset.RecordCount
If Not Adodc1.Recordset.EOF Then
Combo1.AddItem Adodc1.Recordset.Fields("值").Value
Adodc1.Recordset.Movenext
End If
Next i
这段代码最初由ydl890406编写,在VB群中被分享。当时借鉴之后发现有不少错误,经过多次修改,后来索性重写了一版。时间久了,VB群也解散了,但有意思的是,现在很多教程里还在沿用这段代码。
第二部分是ADO的代码连接,这一部分涉及Recordset对象和Connection对象,理解了这两个东西,完全可以自己动手写代码。
什么是Recordset和Connection?简单来说,Connection对象负责建立与数据源的连接,就像搭桥;Recordset对象则用来操作数据,负责在桥上搬运东西。搞清楚这两个核心对象,ADO就掌握了一半。

VB用ADO连接SQLServer数据库
下面是一套比较完整的连接与操作代码,包含了连接、断开、执行SQL语句和查询功能。代码中用到了常量控制连接频率,可以避免反复断开/连接带来的性能浪费。
'数据源信息常量
Public Const conn As String = "Provider = SQLOLEDB.1;Password = sa; UserID = sa; Initial Catalog = StudentFiles; Data Source = localhost"
Public Const CONNECT_LOOP_MAX = 10 '一次执行connect操作,可以访问数据库的次数
Private IsConnect As Boolean '标记数据库是否连接
Private Connect_Num As Integer '标记执行Connect()函数后访问数据的次数
Private cnn As ADDODB.Connection '连接数据库的Connect对象
Private re As ADDODB.Recordset '保存结果集的Recordset对象
'连接数据库
Private Sub Connect()
If IsConnect = True Then
Exit Sub
End If
Set cnn = New ADODB.Connection '关键new用于创建新对象cnn
cnn.ConnectionString = conn
cnn.Open
If cnn.State <> adStateOpen Then
MsgBox "数据库连接失败"
End
End If
IsConnect = True
End Sub
'断开与数据库的连接
Private Sub DisConnect()
Dim rc As Long
If IsConnect = False Then
Exit Sub
End If
cnn.Close
Set cnn = Nothing
IsConnect = False
End Sub
'使用Connect_Num控制数据连接
Public Sub DB_Connect()
Connect_Num = Connect_Num + 1
Connect
End Sub
'使用Connect_Num控制数据断开
Public Sub DB_Disconnect()
If Connect_Num >= CONNECT_LOOP_MAX Then
Connect_Num = 0
Disconnect
End If
End Sub
'强制关闭api方式访问的数据库,计数器复位
Public Sub DBapi_Disconnect()
Connect_Num = 0
Disconnect
End Sub
'执行数据库操作语言
'byval 就是按参数的值传递,过程中参数不会发生变化
'byref 指按参数的地址传值,byref可以省略
Public Sub SQLExt(ByVal TmpSQLstmt As String)
Dim cmd As New ADODB.Command
DB_Connect
Set cmd.ActiveConnection = cnn
cmd.CommandText = TmpSQLstmt
cmd.Execute
Set cmd = Nothing
DB_DisConnect
End Sub
'执行数据库查询语句
Public Function QueryExt(ByVal TmpSQLstmt As String) As ADODB.Recordset
Dim rst As New ADODB.Recordset
DB_Connect
Set rst.ActiveConnection = cnn
rst.CursorType = adOpenDynamic
rst.LockType = adLockOptimistic
rst.Open TmpSQLstmt
Set QueryExt = rst
End Function
这段代码里包含了连接计数器的逻辑,可以防止高频操作时反复连接/断开,算是一个实用的小技巧。实际使用时,只要把数据源信息换成自己的服务器参数,基本就能直接跑起来。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















