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 WithTry' 由数据库文件名连接数据库,并打开连接If odConnection Is Nothing ThenodConnection = New OleDbConnection(cnnStr + openFileDialog.FileName)End IfodConnection.ConnectionString = cnnStr + openFileDialog.FileNameodConnection.Open()Catch ex As ExceptionodConnection = NothingMsgBox(ex.Message)End TryDim 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 到 DataGridViewDataGridView1.DataSource = ReadDataFromDB(sql_select, odConnection)End Sub
    ' 根据 odConnection 获得数据库中表的个数及各个表名(按顺序)' 各个表名存储在输入的参数 tableNames 中,表的个数作为返回值' 输入参数 tableNames 可以为空,可将其 显示在 ComboBox 中。Function GetTableNames(ByRef tableNames As List(Of String), ByVal odConnection As OleDbConnection) As IntegerIf tableNames Is Nothing ThentableNames = New List(Of String)End IftableNames.Clear()If odConnection Is Nothing ThenMsgBox("数据库未连接")Return 0End If' 获取数据库中数据表的名称及个数' Type 有:"TABLE,VIEW,ACCESS TABLE,SYSTEM TABLE",        Dim dt As DataTableDim tableNum As IntegerDim i As IntegerTrydt = odConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _New Object() {Nothing, Nothing, Nothing, "TABLE"})Catch ex As ExceptionMsgBox(ex.Message)Return 0End TrytableNum = dt.Rows.CountIf tableNum = 0 ThentableNames.Clear()Return 0End IfFor i = 0 To tableNum - 1tableNames.Add(dt.Rows(i).Item("TABLE_NAME"))NextReturn tableNumEnd Function
    ' 根据表名将数据表数据读取到 DataTable 并返回' sql 为当前表读取时的 Select 语句' odConnection 为当前数据库的连接    Private Function ReadDataFromDB(ByVal sql As String, ByVal odConnection As OleDbConnection) As DataTableIf (Sql Is Nothing Or Sql Is vbNullString Or odConnection Is Nothing) ThenReturn NothingEnd IfDim dt As DataTable = New DataTableTryDim odAdapter As OleDbDataAdapter = New OleDbDataAdapter(Sql, odConnection)' 填充数据到 DataTableodAdapter.Fill(dt)Catch ex As ExceptionMsgBox(ex.Message)Return NothingEnd TryReturn dtEnd Function
    ' 当在 DataGridView 更改数据时,将更改写入数据库' sql 为当前表读取时的 Select 语句' odConnection 为当前数据库的连接Private Function WriteDataToDB(ByVal sql As String, ByVal odConnection As OleDbConnection) As IntegerIf (sql Is Nothing Or sql Is vbNullString Or odConnection Is Nothing) ThenReturn NothingEnd IfDim num As IntegerTry' 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 numCatch ex As ExceptionMsgBox(ex.Message)Return 0End TryEnd Function
' 可在 ComboBox 的 SelectedIndexChanged 消息函数中更改 DataGridView 的显示不同的表Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChangedDim sql As String = "Select * From " + ComboBox1.TextDataGridView1.DataSource = ReadDataFromDB(sql, odConnection)End Sub

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

  1. 转载OleDb操作Access数据库:新增记录时获取自动编号的主键值

    //打开数据库的一般方法 OleDbConnection cnn = new OleDbConnection(sCnn); cnn.Open(); DataTable table = new Data ...

  2. 学习记录:VB.NET.操作ACCESS数据库

    从98年到现在,VB6使用了20多年,真的舍不得扔掉,但是随着新计算机预装操作系统的版本越来越高,做好的安装包在安装时遇到的问题越来越多,无奈之下只能转向使用VB.NET了.安装了VS2005来学习, ...

  3. VB.NET学习笔记:ADO.NET操作ACCESS数据库——ADO.NET数据访问接口

    一.ADO.NET概述 Ado.net基于XML和离线计算模型. ADO.net的两个核心组件:.Net数据提供程序.DataSet. .net数据提供程序用来与数据库的连接,如SQLServer.n ...

  4. VB操作Access数据库小记

    因工作需要,同时为了避免大量繁琐工作,特研究了一下VB操作Access数据库,代码编写好后一劳永逸,极大提高了效率.本人是VB小白,在网上查阅了一些资料后动手操作,记录以备查阅. 工作环境:Windo ...

  5. C# 操作ACCESS数据库

    看到CSDN上不断兄弟姐妹提问关于c#操作Access的问题,于是本人利用闲暇将c#操作Access的方法加以总结,主要解决的问题有: 创建mdb 创建table 读取table内容 查询table中 ...

  6. python不可以操作access数据库_Python操作Access数据库基本操作步骤分析

    Python编程语言的出现,带给开发人员非常大的好处.我们可以利用这样一款功能强大的面向对象开源语言来轻松的实现许多特定功能需求.比如Python操作Access数据库的功能实现等等.在Python操 ...

  7. C#操作Access数据库

    本教程介绍了如何通过ADO.NET的OleDb相关类来操作Access数据库的相关步骤. 1     软件环境 开发平台:Microsoft Visual Studio 2010 数据库:Micros ...

  8. 直接通过ADO操作Access数据库(修改版)

    自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序.关于OLE DB和ADO的其它详细情况,读者可以自行查阅相关书籍或MSDN,这里就不一一说明了.让我们直接步入主题:如何掌握 ...

  9. DELPHI中操作ACCESS数据库

    DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库) 以下代码在WIN2K,D6,MDAC2.6下测试通过, 编译好的程序在WIN98第二版无ACCESS环境下运行成功. //在之前u ...

最新文章

  1. 控制Open With菜单项的注册表键值
  2. 1.2 Spyder的基本使用
  3. 【Android Protobuf 序列化】Protobuf 使用 ( protobuf-gradle-plugin 插件简介 | Android Studio 中配置插件 | AS 中编译源文件 )
  4. Java线上应用故障排查之一:高CPU占用
  5. 为Ubuntu Linux安装Docker CE Edge
  6. Java日期处理 开始时间-结束时间查询
  7. 《手把手教你》系列基础篇之1-python+ selenium自动化测试-环境搭建(详细)
  8. 编译安装httpd,并启动之
  9. VOC2007-2012数据集
  10. 数字信号处理知识点总结(三):离散傅里叶变换(DFT)
  11. 关于影视后期制作的就业市场调查报告
  12. msvcp71.dll、msvcr71.dll丢失解决方法
  13. Unity - IL2CPP报错
  14. web安全攻防渗透+赵雨佳43
  15. 【CTF】咏春招新赛收获兼write up
  16. 360 mysql读写分离_mysql-proxy之奇虎360 Atlas 安装实现mysql读写分离
  17. php匹配车牌号,车牌号校验示例代码
  18. Revit API: Roof 屋顶
  19. nodejs 下载文件
  20. 草根创业回忆录一: 踏出了第一步的时候...

热门文章

  1. SVG进阶-SMIL动画
  2. 记录一次chown -R 777 /误操作导致vultr utunbu服务器被迫销毁
  3. Opencv的学习之图像滤波
  4. C语言学习(十二)C语言中的字符(宽字符与窄字符)、从字符谈谈C语言的编码、转义字符
  5. 通过css实现单选按钮效果
  6. 计算机win7内容已满,Win7电脑C盘满了如何清理?
  7. 360浏览器怎么导入html,如何将360浏览器收藏网页导入到火狐浏览器中
  8. Typecho 个人支付宝微信收款插件 TePay
  9. Android OpenCV(三十二):霍夫直线检测
  10. php仿制网站,网站仿制合法吗,仿制别人网站注意事项