You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:22:10