2024年3月9日发(作者:)

VS2010与ACCESS2016连接

一.使用向导创建

1.创建工程项目(如图1所示)

图1

2.由于VS2010的工具栏中将OleDbDataAdapte、OleDbConnection、DataGrid

组件是隐藏的,所以先安装图2将这些组件设置为显示

图2

3

设置OleDbDataAdapter组件

在工具栏中,选中OleDbDataAdapter组件,拖放到窗体中,然后系统会自

动打开数据适配器配置向导,如图3-1。点击新建连接,在添加连接窗口中点击

数据库文件名下面的浏览选择需要导入的数据库文件,然后在添加连接窗口中点

击左下角的测试连接按钮,要是测试成功,则表示添加数据库文件成功,否则重

新设置,如图3-1。然后关闭添加连接窗口,一直点击下一步,直到出现图3-2

所示的窗口,点击查询生成器,在查询生成器中进行设置。最后可以得到如图

3-3所示的结果。(可以看到系统自动将OleDbConnection组件也添加到了项目

中)

图3-1

图3-2

图3-3

4.然后单击菜单栏:数据-生成数据集,添加数据,选择默认即可,然后单击OK,

即可把TeacherData1组件添加到项目中,如图4

图4

5.双击窗体,添加一下代码,注意的是括号中添加的是前面生成的那个类组件

TeacherDataSet11

(TeacherDataSet11)

6.向窗口添加一个DataGrid控件,以便查看TeacherDataSet11中的数据。其中

最重要的属性设置是DataSource和DataMember两个属性。

7.运行代码,得到图5结果

图5

二.使用进行数据库编程

类简介

onnection类

1.1连接字符串参数

DimObjConnectionasOleDbConnection=New

OleDbConnection(Provider=.4.0;Data

Source=|DataDirectory|02

教学管理

.mdb;PersistSecurityInfo=True

)

1.2打开和关闭连接

()

’用以打开数据库连接

()

’用以关闭数据库连接

ommand类

2.1初始化DimobjCommandasOleDbCommand=newOleDbCommand()

2.2设置属性

Connection属性:tion=objConnection

CommandText属性:用于指定要执行的SQL语句或存储过程。

如:dText=”INSERTINTO教师”&“(老师编号,名字,性

别,工作时间,政治面目,学历,职称,电话号码,系别)”&“VALUES(25689,”刘大

成”,”男”,’#2017-2-24#,”党员”,”博士”)”

Parameters集合属性:用以编程时,暂时代替更新内容参数

dText=”INSERTINTO教师”&“(老师编号,名字,性别,工作

时间,政治面目,学历,职称,电话号码,系别)”&“VALUES(@老师编号,@名字,@

性别,@工作时间,@政治面目,@学历,@职称,@电话号码,@系别)”

下面还可以使用Add方法向这些参数赋值:

(“@老师编号”,)

(“@名字”,)

(“@性别”,)

ExecuteNonQuery方法:

()

eNonQuery()

()

3.

OleDbDataAdapter

SelectCommand:用于将数据库中的数据填充到DataSet中,其有着自己的属性:

tion:设置用来访问数据存储的OleDbConnection对象

dText:设置用来选取数据的SQL语句或存储过程名称

例如一下代码:

DimobjDataAdapterasNewOleDbDataAdapter()

Command=newOleDbCommand()

tion=objConnection

dText=”SELECT老师编号,名字,性别

FROM教师”&”ORDERBY老师编号”

C.使用命令生成器创建其他命令(下面这条命令可以让用户所做的修改返回到数

据库)

DimobjCommandBuilderAsOleDbCommandBuilder=new

OleDbCommandBuilder(objDataAdapter)

D.设置数据适配器的执行数据处理的方式:SQL语句(默认),读取存储过程

dType=(

默认

)

dType=Procedure

E.

Fill方法:在DataSet对象中填充由OleDbAdapter对象使用其SelectCommand

从数据库存储中检索到的数据。

DimobjDataSetasDataSet=NewDataSet()

(objDataSet,,

”教师”

)

t类

DataSet类是用来存储从数据存储中检索的数据,并保存到客户机的内存中。

ew类

一般用于从DataSet中排序、过滤、编辑和导航数据。

DimobjDataViewasDataView=newDataView((

“教师”

))

属性

对数据进行排序

=

”教师编号”’默认为升序排列

=

”教师编号

DESC

”’添加DESC关键字,使得其为降序排列

ter属性

对数据的行进行过滤

ter=”

教师

=“

张乐

””

方法

寻找特定数据源

DiminPositionAsInteger

=”

教师编号

inPosition=(“96023”)

’如果找到一个匹配的,Find方法将返回

该记录在DataView中的位置,否则将返回-1,表示没有找到任何匹配数据;使

用Find方法还有一个特点是,当DataView中的匹配的数据不止一个时,Find

方法在找到第一个后将停止查找;Find方法不区分大小写,还可以对多个列同

时进行匹配寻找,如一下代码:

DiminPositonAsInteger

DimarrValues(1)asobject

=”

教师编号

,

姓名

arrValues(0)=”96023”arrValues(1)=”

刘常

inPositon=(arrValues)

编程实例

例一(以02教学管理.mdb为数据源):

'导入命名空间

PublicClassForm1

DimobjConnectionAsOleDbConnection=New

OleDbConnection("Provider=.4.0;DataSource=D:02教学管理.mdb;PersistSecurity

Info=False")'添加数据连接对象

DimobjDataAdapterAsNewOleDbDataAdapter'

添加数据适配器对象

DimobjDataSetAsNewDataSet'

添加数据存储对象,作为数据存储容器

PrivateSubForm1_Load(,rgs)Handles

Command=NewOleDbCommand()'

初始化一个

OleDbCommand

类的一个实

例,并赋予其

SlectCommand

属性

tion=objConnection'

Connection

属性设置为连接对象

dText="select*from

教师

"'

要执行的

SQL

语句

dType='

设置执行的方式,这里选择默

认的

SQL

语句,此条语句可以省去

()'

打开数据连接

(objDataSet,"

教师

")'

将数据填充到数据存储容器中

()'

关闭数据连接

urce=objDataSet'

设置

DataGrid

对象的数据来源

mber="

教师

"

'

清理内存,释放空间

objDataAdapter=Nothing

objConnection=Nothing

EndSub

EndClass

运行结果:

例二(以02教学管理.mdb为数据源)

'

导入命名控件

PublicClassForm1

DimcnAsOleDbConnection

DimdaAsOleDbDataAdapter

DimdsAsDataSet

PrivateSubForm1_Load(ByValsenderAsObject,ByValeAsEventArgs)

DimcnStrAsString="Provider=.4.0;DataSource=E:

软件学习

Acesssucai02

教学管理

.mdb;PersistSecurityInfo=False"

cn=NewOleDbConnection(cnStr)

'DimsqlAsString="select*from

教师

where

性别

="&"'"&"

"&"'"

DimsqlAsString="select*from

教师

"

da=NewOleDbDataAdapter(sql,cn)

ds=NewDataSet

(ds,"

教师

")

urce=ds

mber="

教师

"

'urce=(0)

da=Nothing

cn=Nothing

EndSub

EndClass

运行结果:

例三(优化DataGrid属性)

'

下面为对

DataGrid

属性进行优化的代码

DimobjDataGridTableStyleAsNewDataGridTableStyle()'

声明允许访问的

DataGrid

表样式的对象

DimobjTextColAsNewDataGridTextBoxColumn()'

声明允许自定义

DataGrid

表列的对象

atingBackColor=Red'

改变表的背景色

gName="

教师

"'

将背景色映射到指定的表上

'

设置第一列

gName="

老师编号

"'

指定映射的列

Text="

编号

"'

设置指定列的标题

=40'

设置列的宽度

(objTextCol)'

将改变的列属性添加到

DataGridTableStyle

'

设置第二列

objTextCol=NewDataGridTextBoxColumn()

gName="

名字

"

Text="

姓名

"

=50

(objTextCol)

'

设置第三列

objTextCol=NewDataGridTextBoxColumn()

gName="

性别

"

Text="

性别

"

=30

ent='

将列文本对齐方式设置为居中对齐

(objTextCol)

'

设置第四列

objTextCol=NewDataGridTextBoxColumn()

gName="

工作时间

"

Text="

入职时间

"

=150

(objTextCol)

'

设置第五列

objTextCol=NewDataGridTextBoxColumn()

gName="

政治面目

"

Text="

政治面目

"

(objTextCol)

(objDataGridTableStyle)'

将表的样式改变添加到

DataGrid

控件上

运行结果:

例四数据绑定(不具备排序功能)

PublicClassForm1

'

Dim

Info=true")

DimobjDataAdapterAsOleDbDataAdapter=NewOleDbDataAdapter("select*from

objConnection)

DimobjDataSetAsDataSet

DimobjDataviewAsDataView'

创建数据导航对象

DimobjCurrencyMangerAsCurrencyManager'

创建数据绑定控件和数据源同步

'

从数据库中获得最新的数据并填充

DataView

对象

PublicSubFillDataSetAndView()

objDataSet=NewDataSet()'

初始化一个

DataSet

实例

(objDataSet,"

教师

")'

使用数据适配器向存储器

objDataSet

中存储数据

objDataview=NewDataView(("

教师

"))'

指定

DataView

对象查看

DataSet

对象上的

教师表格数据

objCurrencyManger=CType(gContext(objDataview),CurrencyManager)'CType

需要两个

教师

",

objConnectionAsOleDbConnection=New

OleDbConnection("Provider=.4.0;DataSource=D:02

教学管理

.mdb;PersistSecurity

参数:要转换的表达式和转换的类型

EndSub

'

将窗体控件绑定到

DataView

对象上

PublicSubBindfields()

'

清除绑定

()

()

()

()

'

将绑定设置回到原来数据源

("text",objDataview,"

名字

")

("text",objDataview,"

老师编号

")

("text",objDataview,"

政治面目

")

("text",objDataview,"

工作时间

")

'

设置状态栏

="******

准备就绪

******"

EndSub

'

记录位置

PublicSubShowPosition()

=""Then

="***

不清楚

***"

EndIf

=""Then

="

不清楚

"

EndIf

="

"&on+1&"

"&""&"

"_

&()&"

"

EndSub

PrivateSubForm1_Load(,rgs)Handles

("

姓名

")

("

编号

")

("

政治面目

")

("

入职时间

")

edIndex=0

FillDataSetAndView()'

使用

FillDataSetAndView

过程来填充

DataView

对象

Bindfields()'

将窗体控件绑定到

DataView

对象上

ShowPosition()'

显示当前记录的位置和

DataView

对象中包含的所有记录的数目

'

清理内存

objDataAdapter=Nothing

objConnection=Nothing

EndSub

'

后退到第一个项目

PrivateSubButton7_Click(,rgs)Handles

on=0Then

("******

已经处于项目的第一项

******")

ShowPosition()

Else

on=0

ShowPosition()

EndIf

EndSub

'

后退一个项目

PrivateSubButton8_Click(,rgs)Handles

on=0Then

("******

已经处于项目的第一项

******")

ShowPosition()

Else

on-=1

ShowPosition()

EndIf

EndSub

'

前进一个项目

PrivateSubButton9_Click(,rgs)Handles

on=-1Then

("*****

已经处于项目的最后一项

******")

ShowPosition()

Else

on+=1

ShowPosition()

EndIf

EndSub

'

前进到最后一个项目

PrivateSubButton10_Click(,rgs)Handles

on=-1Then

("******

已经处于项目的最后一项

******")

ShowPosition()

Else

on=-1

ShowPosition()

EndIf

EndSub

EndClass

结果:

例五数据绑定(具备排序功能)

添加一下代码:

'

增加排序功能

PrivateSubButton1_Click(,rgs)Handles

edIndex

Case0

="

名字

"'

默认排序为升序,添加关键字

DESC

则变为降序

Case1

="

老师编号

"

Case2

="

政治面目

"

Case3

="

工作时间

"

EndSelect

'

使得记录处于第一条上

on=0

ShowPosition()

'

使用下面这种方式也可以使得记录在第一条上

'Button7_Click(Nothing,Nothing)

="******

已经完成排序

******"&"

排序目录:

"&edItem

EndSub

结果:

例六数据绑定(查找功能)

'

查找功能

PrivateSubButton2_Click(,rgs)Handles

DimintPositionAsInteger

edIndex

Case0

="

名字

"

Case1

="

老师编号

"

Case2

="

政治面目

"

Case3

="

工作时间

"

EndSelect

edIndex<3Then

intPosition=()

Else

intPosition=(CType(,Date))

EndIf

IfintPosition=-1Then

="******

没有查到对应项目

******"

Else

="******

成功查找

******"

on=intPosition

EndIf

ShowPosition()

EndSub

结果:

(待更新)