在Visual Basic(VB)中与数据库建立连接是开发数据库应用程序的核心步骤,常见的实现方式包括ADO(ActiveX Data Objects)、ADO.NET(如SqlClient)等,以下是详细指南:
连接方式与适用场景
连接方式 | 技术特点 | 适用数据库 |
---|---|---|
ADODB.Connection | 基于COM技术,兼容多种数据库,需引用ADODB 库。 |
SQL Server、Access、Oracle等 |
SqlClient | .NET原生方式,需引用System.Data.SqlClient ,性能更高,仅支持SQL Server。 |
SQL Server |
OleDb | 通用接口,依赖数据库驱动,需手动配置连接字符串。 | Access、SQL Server、其他OLE DB源 |
详细实现步骤
引用命名空间与库
- ADO方式:需添加对
ADODB
库的引用(工具栏→【项目】→【引用】→勾选ADODB
)。 - ADO.NET方式:在代码顶部导入
Imports System.Data.SqlClient
。
配置连接字符串
连接字符串需包含服务器地址、数据库名、认证信息等,格式因数据库类型而异:
| 数据库类型 | 连接字符串示例 | 关键参数 |
|—————-|——————————————————|——————————————|
| SQL Server | Server=localhost;Database=TestDB;Uid=sa;Pwd=123456
| Server
(地址)/Database
/Uid
/Pwd
|
| Access | Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:dbtest.accdb
| Provider
(驱动)/Data Source
|
| Oracle | User Id=oracle;Password=123456;Data Source=orcl
| User Id
/Password
/Data Source
|
创建连接对象
- ADO方式:
Dim conn As New ADODB.Connection conn.ConnectionString = "Server=localhost;Database=TestDB;Uid=sa;Pwd=123456"
- ADO.NET方式:
Dim conn As New SqlConnection("Server=localhost;Database=TestDB;Uid=sa;Pwd=123456")
打开与关闭连接
' 打开连接 conn.Open() ' 执行操作(如查询) Dim cmd As New SqlCommand("SELECT FROM Users", conn) Dim reader = cmd.ExecuteReader() ' 关闭连接 conn.Close()
参数化查询(防SQL注入)
Dim sql As String = "INSERT INTO Users (Name, Age) VALUES (@Name, @Age)" Using cmd As New SqlCommand(sql, conn) cmd.Parameters.AddWithValue("@Name", "John Doe") cmd.Parameters.AddWithValue("@Age", 30) cmd.ExecuteNonQuery() End Using
常见问题与解决方案
连接失败如何处理?
- 检查连接字符串:确保服务器地址、数据库名、用户名和密码正确。
- 验证驱动安装:如使用OLE DB连接Access,需安装
Microsoft.ACE.OLEDB
驱动。 - 防火墙设置:若连接远程数据库,需确保对应端口(如SQL Server的1433)开放。
何时使用ADO而非ADO.NET?
- 优先选择ADO.NET:若仅针对SQL Server,推荐使用
SqlClient
,因其性能更好且集成于.NET框架。 - 选择ADO:需兼容多种数据库(如Access、Oracle)时,可使用ADO统一接口。
完整示例代码
ADO方式连接SQL Server:
Imports ADODB Module Module1 Sub Main() Dim conn As New ADODB.Connection Dim connStr As String = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=TestDB;User ID=sa;Password=123456" conn.Open(connStr) Dim rs As New ADODB.Recordset rs.Open("SELECT FROM Users", conn) While Not rs.EOF Console.WriteLine(rs.Fields("Name").Value) rs.MoveNext() End While rs.Close() conn.Close() End Sub End Module
ADO.NET方式连接SQL Server:
Imports System.Data.SqlClient Module Module1 Sub Main() Dim connStr As String = "Server=localhost;Database=TestDB;Uid=sa;Pwd=123456" Using conn As New SqlConnection(connStr) conn.Open() Dim cmd As New SqlCommand("SELECT FROM Users", conn) Using reader = cmd.ExecuteReader() While reader.Read() Console.WriteLine(reader("Name").ToString()) End While End Using End Using End Sub End Module
FAQs
Q1:连接字符串中的Integrated Security=True
如何使用?
A1:若数据库支持Windows身份验证(如SQL Server),可将连接字符串中的Uid
和Pwd
替换为Integrated Security=True
,
"Server=localhost;Database=TestDB;Integrated Security=True"
此时会以当前Windows用户权限登录。
Q2:如何判断连接是否成功?
A2:在conn.Open()
后,可通过conn.State
属性检查状态:
If conn.State = ConnectionState.Open Then Console.WriteLine("连接成功") Else Console.WriteLine("连接失败") End If
若失败,需捕获异常并读取Exception.Message
获取
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/68045.html