VB.NET 使用 OleDb 操作 Access 数据库(来自 MSDN)

这篇博客介绍了如何利用VB.NET通过OleDb连接和操作Access数据库,内容基于MSDN的帮助文档。文章强调了新手学习MSDN的重要性,并提供了一个简单的代码示例,涉及OleDbConnection、OleDbDataAdapter、OleDbCommand和OleDbCommandBuilder等类的使用。

VB.NET 使用 OleDb 操作 Access 数据库

这里采用 OleDb 方式对 Access 数据库进行访问,主要内容都来自 MSDN 帮助文档。建议新手注意 MSDN 的用途。下面的代码只是示例,请自行组织代码结构。

首先引用 

导入命名空间 :Imports System.Data.OleDb

然后我们要用到以下几个类,OleDbConnection,OleDbDataAdapter,  OleDbCommand , OleDbCommandBuilder。详细用法请参照 MSDN

现在定义以下全局变量:

    ' 定义相关变量
    ' 到数据源的连接。并实例化
    Public odConnection As OleDbConnection = New OleDbConnection()
    ' 存储读取当前数据表的sql语句,写入数据库时必须使用
    Public sql_select As String = "Select * From "
    ' 连接字符串前面一部分,不包括文件名
    Public cnnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data source="

    Public openFileDialog As OpenFileDialog = New OpenFileDialog()


    ' 主测试函数,需要一个 ComboBox1 和 DataGridView1。
    Private Sub TestMain()
        ' 弹出选择文件对话框选择数据库文件
        With openFileDialog
            .Title = "Open DB File"
            .Filter = "Aaccess07-10 Database|*.accdb|Access97-03 Database|*.mdb|All Files|*.*"
            .FileName = vbNullString
            .ShowDialog()
        End With

        Try
            ' 由数据库文件名连接数据库,并打开连接
            If odConnection Is Nothing Then
                odConnection = New OleDbConnection(cnnStr + openFileDialog.FileName)
            End If
            odConnection.ConnectionString = cnnStr + openFileDialog.FileName
            odConnection.Open()
        Catch ex As Exception
            odConnection = Nothing
            MsgBox(ex.Message)
        End Try
        Dim sql As String = "Select * From "
        Dim tns As List(Of String)
        ' 获得表名列表
        Dim num As Integer = GetTableNames(tns, odConnection)
        ' 将表名列表添加到 ComboBox 
        ComboBox1.Items.Clear()
        ComboBox1.Items.AddRange(tns.ToArray)

        ' 根据表名列表的第一个表名获取数据表数据,显示在 DataGridView 中
        sql += tns.Item(0)
        ' 存储该 sql 语句到 sql_select 读取其他表时,须更新该语句
        sql_select = sql
        ' 绑定结果 DataTable 到 DataGridView
        DataGridView1.DataSource = ReadDataFromDB(sql_select, odConnection)

    End Sub
    ' 根据 odConnection 获得数据库中表的个数及各个表名(按顺序)
    ' 各个表名存储在输入的参数 tableNames 中,表的个数作为返回值
    ' 输入参数 tableNames 可以为空,可将其 显示在 ComboBox 中。
    Function GetTableNames(ByRef tableNames As List(Of String), ByVal odConnection As OleDbConnection) As Integer
        If tableNames Is Nothing Then
            tableNames = New List(Of String)
        End If
        tableNames.Clear()
        If odConnection Is Nothing Then
            MsgBox("数据库未连接")
            Return 0
        End If
        ' 获取数据库中数据表的名称及个数
        ' Type 有:"TABLE,VIEW,ACCESS TABLE,SYSTEM TABLE",        
        Dim dt As DataTable
        Dim tableNum As Integer
        Dim i As Integer

        Try
            dt = odConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _
                                                 New Object() {Nothing, Nothing, Nothing, "TABLE"})
        Catch ex As Exception
            MsgBox(ex.Message)
            Return 0
        End Try

        tableNum = dt.Rows.Count
        If tableNum = 0 Then
            tableNames.Clear()
            Return 0
        End If

        For i = 0 To tableNum - 1
            tableNames.Add(dt.Rows(i).Item("TABLE_NAME"))
        Next

        Return tableNum
    End Function

    ' 根据表名将数据表数据读取到 DataTable 并返回
    ' sql 为当前表读取时的 Select 语句
    ' odConnection 为当前数据库的连接    
    Private Function ReadDataFromDB(ByVal sql As String, ByVal odConnection As OleDbConnection) As DataTable
        If (Sql Is Nothing Or Sql Is vbNullString Or odConnection Is Nothing) Then
            Return Nothing
        End If
        Dim dt As DataTable = New DataTable
        Try
            Dim odAdapter As OleDbDataAdapter = New OleDbDataAdapter(Sql, odConnection)
            ' 填充数据到 DataTable
            odAdapter.Fill(dt)
        Catch ex As Exception
            MsgBox(ex.Message)
            Return Nothing
        End Try
        Return dt
    End Function

    ' 当在 DataGridView 更改数据时,将更改写入数据库
    ' sql 为当前表读取时的 Select 语句
    ' odConnection 为当前数据库的连接
    Private Function WriteDataToDB(ByVal sql As String, ByVal odConnection As OleDbConnection) As Integer
        If (sql Is Nothing Or sql Is vbNullString Or odConnection Is Nothing) Then
            Return Nothing
        End If
        Dim num As Integer

        Try
            ' odAdapter 数据命令和一个数据库连接,于填充 DataSet 和更新数据源
            Dim odAdapter As OleDbDataAdapter = New OleDbDataAdapter(sql, odConnection)
            ' odCmdBuilder 自动生成用于协调对 DataSet 的更改与关联数据库的单表命令
            Dim odCmdBuilder As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(odAdapter)
            odCmdBuilder.QuotePrefix = "["
            odCmdBuilder.QuoteSuffix = "]"
            ' 获取在数据源中执行插入操作所需的自动生成的 OleDbCommand 对象
            odCmdBuilder.GetInsertCommand()
            ' 获取在数据源中执行删除操作所需的自动生成的 OleDbCommand 对象
            odCmdBuilder.GetDeleteCommand()
            ' 获取在数据源中执行更新操作所需的自动生成的 OleDbCommand 对象
            odCmdBuilder.GetUpdateCommand()

            num = odAdapter.Update(DataGridView1.DataSource)          ' 就保存更改,在实质上是把网格中的数据回发给数据库            
            Return num
        Catch ex As Exception
            MsgBox(ex.Message)
            Return 0
        End Try
    End Function

' 可在 ComboBox 的 SelectedIndexChanged 消息函数中更改 DataGridView 的显示不同的表
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        Dim sql As String = "Select * From " + ComboBox1.Text
        DataGridView1.DataSource = ReadDataFromDB(sql, odConnection)

    End Sub






内容概要:本文介绍了一种基于多目标粒子群算法(MOPSO)的微电网优化调度模型,综合考虑风能、光伏、储能系统、柴油发电机、燃气轮机以及与主电网之间的能量交互等多种分布式能源的协同运行。通过构建以运行成本最小化、碳排放最低化和系统可靠性最优化为目标的多目标优化模型,利用Matlab平台实现MOPSO算法求解,完成对微电网在不同运行场景下的能量管理与调度方案优化。该模型能够有效平衡经济性与环保性之间的关系,适用于含多类型分布式电源的复杂微电网系统,具有较强的工程应用价值和科研参考意义; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及工程技术人员,尤其适合从事微电网、智能电网、综合能源系统、可再生能源集成与优化调度等领域研究的专业人士; 使用场景及目标:①用于多能源耦合微电网系统的协同优化调度研究;②支持多目标智能优化算法在能源系统中的建模与求解实践,帮助用户掌握MOPSO在实际工程问题中的应用方法;③为学术论文复现、毕业设计、科研项目开发提供完整的代码实例与技术支撑; 阅读建议:建议读者结合Matlab代码与理论文档,深入理解目标函数构建、约束条件处理及Pareto最优解集生成机制,重点关注算法参数设置、多目标权衡分析与结果可视化,并可通过调整能源配置或引入新约束进行二次开发与创新研究。
内容概要:本文系统研究了基于模型预测控制(MPC)的滚动优化方法在微电网多时间尺度能量管理调度中的应用。通过构建包含风能、光伏、储能等多种分布式能源的微电网综合系统模型,充分利用MPC的前瞻性预测与滚动优化机制,实现对系统内部能量流的精细化、动态化调控。研究重点解决了新能源出力强不确定性带来的调度挑战,兼顾系统运行的经济性、稳定性与可靠性,在日前、日内及实时等多个时间尺度上实现了优化决策的协同。文中配套提供了完整的Python代码实现,涵盖模型构建、约束处理、目标函数设定与求解全过程,具有较强的可复现性与工程参考价值。; 适合人群:具备一定电力系统、优化理论基础和Python编程能力的研究生、科研人员及从事微电网、综合能源系统、能源互联网等领域研究的工程技术人员。; 使用场景及目标:①深入理解MPC在复杂能源系统调度中的核心原理与技术优势;②学习并复现多时间尺度滚动优化的完整建模与求解流程;③为微电网能量管理系统(EMS)的开发、相关学术研究或工程项目提供直接的算法实现参考与技术支撑; 阅读建议:建议读者结合所提供的Python代码进行逐行研读与调试,亲自动手修改系统参数、负荷曲线或新能源出力数据,以深刻体会MPC算法的动态响应特性与优化效果,进而在此基础上开展二次开发与创新性研究。
智能安防是依托人工智能、大数据、物联网等前沿技术构建的新一代安全防护体系,彻底打破了传统安防“被动监控、事后追溯”的局限。它不再是孤立的摄像头、门禁和报警器的简单组合,而是通过全域感知设备的互联互通,实现对人员、车辆、环境等多维度数据的实时采集与智能分析。从社区出入口的人脸无感通行、异常行为识别,到道路上的违章智能抓拍、重点区域的入侵预警,再到企业园区的消防隐患预判、设备故障自动告警,智能安防能在毫秒级完成风险研判,把安全防线从“事后处置”前移到“事前预防”。如今,它早已渗透到城市治理、居家生活、商业运营等各类场景,成为守护公共安全与私人空间的核心技术支撑。 不同于传统安防依赖人工盯守的高成本模式,智能安防凭借算法的持续迭代,不断拓展安全防护的边界。它可以通过对历史数据的深度挖掘,提前识别人群聚集、消防通道占用等潜在风险,联动公安、物业、应急等多部门快速响应,大幅降低安全事件的发生概率和处置时长。在老旧小区改造中,智能安防设备的加装解决了过去流动人口管理难、高空抛物溯源难等长期痛点;在家庭场景里,智能门锁、可视门铃、燃气泄漏报警器等设备组成的居家安防网络,让用户通过手机就能随时掌握家中安全状态。随着数字城市建设的推进,智能安防正从单一的安全工具,进化为构建智慧城市安全底座的关键组成部分,为人们的日常工作与生活筑牢更高效、更精准的防护屏障。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值