如何在同一VB项目的不同类或窗体中调用已创建的模块?
VB.NET 项目中调用数据库连接模块的代码示例
1. 数据库连接模块示例
假设你已创建如下封装数据库连接逻辑的模块:
Module DbConnectionModule ' 替换为你的实际数据库连接字符串 Private Const ConnectionString As String = "Data Source=YourServer;Initial Catalog=YourDb;Integrated Security=True" ' 提供获取数据库连接的公共方法 Public Function GetDbConnection() As SqlConnection Return New SqlConnection(ConnectionString) End Function ' 辅助关闭并释放连接的方法 Public Sub ReleaseDbConnection(ByRef conn As SqlConnection) If conn IsNot Nothing AndAlso conn.State = ConnectionState.Open Then conn.Close() conn.Dispose() End If End Sub End Module
2. 同一项目新类中调用模块
只要类和模块处于同一命名空间(VB.NET项目默认自动统一命名空间,除非手动修改),可直接调用模块的公共成员:
Public Class DataOperationClass Public Sub GetTableData() ' 调用模块方法获取连接,用Using自动管理资源 Using conn As SqlConnection = DbConnectionModule.GetDbConnection() conn.Open() Dim queryCmd As New SqlCommand("SELECT * FROM Product", conn) Dim dataReader As SqlDataReader = queryCmd.ExecuteReader() ' 处理查询结果 While dataReader.Read() Console.WriteLine($"产品ID:{dataReader("Id")},名称:{dataReader("Name")}") End While dataReader.Close() End Using End Sub End Class
3. 同一VB.NET文件中关联模块与类
VB.NET允许在单个.vb文件中定义多个类型,直接按顺序编写模块和类即可:
' 先定义数据库连接模块 Module DbConnectionModule Private Const ConnectionString As String = "Data Source=YourServer;Initial Catalog=YourDb;Integrated Security=True" Public Function GetDbConnection() As SqlConnection Return New SqlConnection(ConnectionString) End Function Public Sub ReleaseDbConnection(ByRef conn As SqlConnection) If conn IsNot Nothing AndAlso conn.State = ConnectionState.Open Then conn.Close() conn.Dispose() End If End Sub End Module ' 紧接着定义业务类 Public Class OrderHandler Public Sub CreateOrder(orderId As Integer, customerName As String) Using conn As SqlConnection = DbConnectionModule.GetDbConnection() conn.Open() Dim insertCmd As New SqlCommand("INSERT INTO Orders(Id, CustomerName) VALUES(@Id, @Name)", conn) insertCmd.Parameters.AddWithValue("@Id", orderId) insertCmd.Parameters.AddWithValue("@Name", customerName) Dim affectedRows As Integer = insertCmd.ExecuteNonQuery() Console.WriteLine($"成功插入 {affectedRows} 条订单数据") End Using End Sub End Class
关键注意点
- 模块中只有
Public修饰的成员才能被外部类访问,Private成员仅模块内部可用。 - 优先使用
Using语句管理数据库连接,避免手动释放资源遗漏导致的连接泄漏。 - 若模块和类不在同一命名空间,需在类文件顶部添加
Imports 模块所在命名空间语句。
内容的提问来源于stack exchange,提问作者Tharu Diss
相关产品推荐
相关产品推荐

