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
结果:
(待更新)


发布评论