access操作mysql数据库实例_VB实例教程之操作Access数据库

该教程详细介绍了如何使用VB进行Access数据库的操作,包括连接数据库、获取表名、填充数据到DataGridView、实现数据的增删改查,以及条件查询功能。通过示例代码,解决了在操作后无法保存数据到数据库的问题。
摘要由CSDN通过智能技术生成

数日心血,无私奉献!

1.解决了很多网友修改后datagridview1之后无法保存数据到数据库的问题!

先导入三个类,使后文写代码时简单,就是省去了包的路径,可直接用类名

Imports System.Data.SqlClient

Imports System.Data

Imports System.Data.OleDb

Public Class Form1

Dim odCnn As OleDbConnection'定义一个连接,用于打开数据库,以便事先取出表名

Dim odApter As OleDbDataAdapter'定义一个桥接器,介于内存中DataSet表和数据库之间,任何改变都在内存中进行,先不做实质性动作,直到需要确定了,才回发给数据库做实质性改动。

Dim dataPath As String'数据库的路径,含文件名

Dim passWord As String’数据库密码

Dim cnnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data source="‘用于连接的字符串 引擎

Dim selectTabel As String'选定的要打开的表,确定后才能打开

Dim sqlStr As String’查询

Dim dataSet As DataSet‘内存中的虚拟的数据表,表的集合,有架构

Dim dataTable As DataTable’表,用于填充网格组件

Dim openFileDlg As OpenFileDialog‘代码创建的通用打开对话框

Dim dataGridView As DataGridView’用代码创建的网格

Dim CB As OleDbCommandBuilder‘能自动生成保存信息的工具,就是它在后台默默无闻地工作,才能够在确定之后自动完成保存任务:就是网友大为困惑的无法将DataGridView1中修改的内容保存数据库的问题。

Function dlg(ByVal index As Integer) As String’自定义函数,生成并调用打开对话框,获取数据库的路径

openFileDlg = New OpenFileDialog‘创建实例 它是隐式的,不用加载到窗体上

With openFileDlg’对一个对象进行格式化操作,用With方面,运行速度也快

.Title = "张志晨数据库程序V2012"‘对话框标题,个性化设置,可无。

.Filter = "Aaccess07-10数据库|*.accdb|access97-03数据库|*.mdb| 所有类型|*.*"’文件过滤器

.FilterIndex = index‘默认的要显示的文件类型

.ShowDialog()’显示打开对话框

Return .FileName‘此函数有返回值,用Return 返回值并结束函数程序运行

End With

End Function

'..........调用打开对话框,获取数据库路径

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Label1.Text = dlg(1)’调用打开对话框,获取数据库路径

dataPath = Label1.Text‘把路径给变量,方便使用

passWord = ""’设置密码,无则空

cnnStr = cnnStr & dataPath & ";JET OLEDB:Database Password=" & passWord‘构成完成的连接

odCnn = New OleDbConnection(cnnStr)’创建连接器实例

odCnn.Open()‘连接并在后台打开数据库

getTableName()’读取库的表名,并弹出窗体显示表的个数

End Sub

'.............................获取表名的函数........

Function getTableName()

' 获取数据表列表

'Type 有:"TABLE,VIEW,ACCESS TABLE,SYSTEM TABLE",

Dim dt As DataTable’创建一个临时用的表

Dim i As Integer‘一个临时用的计数器

dt = odCnn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _

New Object() {Nothing, Nothing, Nothing, "TABLE"})’获取所有的表信息,从中过滤出用户创建的表

'DataGridView2.DataSource = dt '.......显示表的所有信息

For i = 0 To dt.Rows.Count - 1 '记录数,也就是行数

ComboBox1.Items.Add(dt.Rows(i).Item("TABLE_NAME"))‘显示在列表框里

'显示字段名为 TABLE_NAME 列的行值 就是用户创建的表的名

Next

ComboBox1.Text = ComboBox1.Items(0) '设置第一个表为列表框的值,也就是显示第一个表

MsgBox("数据库中共有" & dt.Rows.Count & "个表")

End Function

'.....................填充网格 显示数据,以便用户观察使用.......

Function fillData()

Dim sql As String = "select * from " & selectTabel '建立查询 字符型

odApter = New OleDb.OleDbDataAdapter(sql, odCnn) '桥接器

dataSet = New DataSet '内存中的虚拟数据库实例

odApter.Fill(dataSet, "table") '上面的实例被填充

dataGridView.DataSource = dataSet.Tables("table")’填充

dataGridView.AutoResizeColumns()‘可自动生成需要的列

dataGridView.AutoResizeRows()’行自适应高度

dataGridView.AutoResizeColumns()’列自适应宽度

'获取字段名,并填充列表

'sqlFm.getField()可以获取指定的某一个表的字段,就是列名,列标题。

CB = New OleDb.OleDbCommandBuilder(odApter) '用于自动记录你对数据的更改,并形成保存方法备用

If CB Is Nothing Then‘如果上一行自动创建失败,就用下一行的代码人工创建

CB.DataAdapter = New OleDb.OleDbDataAdapter

odApter.DeleteCommand = CB.DataAdapter.DeleteCommand’删除数据

odApter.InsertCommand = CB.DataAdapter.InsertCommand‘插入数据

odApter.UpdateCommand = CB.DataAdapter.UpdateCommand’修改数据

End If

MsgBox("共有记录条数:" & dataSet.Tables("table").Rows.Count, vbOKOnly, "打开成功")

End Function

'创建一个网格

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

dataGridView = New DataGridView‘创建网格实例

Me.Controls.Add(dataGridView)’显示对象

With dataGridView‘定位网格,格式化

.Top = 60

.Left = 0

.Width = Me.Width - 20

.Height = Me.Height - 40 - 60

.Visible = True

End With

End Sub

'打开指定的表

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

selectTabel = ComboBox1.Text

fillData()’填充网格

End Sub

'....................保存修改.......................................

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

save_sub()‘调用下面的函数

End Sub

'保存数据

Function save_sub()

Dim temptb As DataTable’创建一个临时用的表

temptb = dataGridView.DataSource.GetChanges() '获取更改信息

If temptb IsNot Nothing Then '如果有更改

odApter.Update(dataGridView.DataSource) '就保存更改,在实质上是把网格中的数据回发给数据库

MsgBox("您的更改已经回发到数据库!", , "通用数据库程序")

Else

MsgBox("您没有更改任何数据!", , "通用数据库程序")

Exit Function

End If

End Function

End Class

39605724_1.jpg

'..............以上为自学成果,注满心血,但愿对网友有用..................................

2012.9.28增补:

‘条件查询(认为是对列进行筛选就行)

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

Dim sr As New DataView

sr = dataSet.Tables("table").DefaultView

sr.RowFilter = ComboBox2.Text & "='" & TextBox1.Text & "'"

ListBox1.DataSource = sr

End Sub

’显示你当前正在操作(点击)的单元格:

Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick

'Dim i = DataGridView1.CurrentRow.Cells(4).Value '当前行的第5列的数据

'ar = DataGridView1.CurrentRow.Index ’选中的行是第几行?

'Dim i = DataGridView1.Rows(ar).Cells(3).Value()’由i决定的行的数据,可用循环

Dim i = DataGridView1.SelectedCells.Item(1).RowIndex

MsgBox(i)

End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值