《任务三访问Access数据库.ppt》由会员分享,可在线阅读,更多相关《任务三访问Access数据库.ppt(48页珍藏版)》请在三一办公上搜索。
1、VB.NET程序设计,任务三 访问Access数据库,学习目标,1、了解数据库、表、字段、记录等基本概念2、了解使用Access系统创建Access数据库3、掌握访问Access数据库的方法,数据库术语,数据库(Database):存储于文件中的有组织的信息集合数据表(Table):由行和列组成的信息集合字段(Field):存储于数据库中的信息的类别记录(Record):有关一个特定客户或企业的所有信息叫一条记录,ADO.NET,1、VB.NET并非是用来创建新数据库的,而是用于显示、分析和操作数据库中的信息。2、ADO.NET是VB.NET提供的一种新的访问数据库的数据模型(或叫数据访问工具
2、),通过这种数据模型可以访问更多格式的数据库(如Access、FoxPro、Paradox、Oracle、SQL Server等);也不管这些数据库放在什么位置都能访问(本地或是网上)。3、组成ADO.NET的是一些类,这些类位于System.Data命名空间中,他们提供了连接数据库、读取数据库和更新数据库等操作。,预备知识结构化查询语言SQL,SQL是一种标准化的数据库查询语言,虽说是一种查询语言,但它可完成对数据库的各种操作,包括数据的查询、增加、修改、删除以及其他操作。SQL主要语句:Select语句、Insert语句、Update语句、Delete语句。,预备知识结构化查询语言SQL,
3、Select语句的语法格式:Select 字段名 From 数据表名 Where 条件 举例:Select*From 学生信息Select*From 学生信息 Where 姓名=“李丽”Select 姓名 From 学生信息 Where 姓名=“李丽”select*from student1 where 学号=3select*from student1 where 学号 Between 5 And 10,预备知识结构化查询语言SQL,Select语句举例:select*from student1 where 姓名 like“刘*”select*from 书名 where 书籍类别 In(“数据
4、库”,”Internet”)select*from 书名 where 书籍类别 In(“数据库”)And PubID=1 select*from student1 where 姓名 like“刘*”order by 学号 ASC 注:使用ORDER BY子句排序,升序的关键字为ASC,降序为DESC。,预备知识结构化查询语言SQL,update、insert、delete 语句举例:insert into StuInfo(name,age)values(“张山”,19)update StuInfo set name=“张三“,age=18 where id=005delete*from Stu
5、Info where id=18,使用Access创建数据库,操作步骤:1、启动Access办公软件2、文件/新建3、双击“使用设计器创建表”4、设置主键:右击某个字段名,选“主键”5、添加数据:双击表名,直接添加数据,保存,访问Access数据库显示,访问Access数据库显示,方法一:在Visual Studio.NET中建立连接1、从工具箱中的“数据”标签中双击OleDbDataAdapter对象 如果工具箱中的“数据”标签中没有OleDbDataAdapter对象,则可以右击“数据”工具箱中某控件例如DataSet控件,从弹出的快捷菜单中执行选择项命令(如图),打开“选择工具箱项”对话
6、框,选择“.NET Framework组件”选项卡,从中选择OleDbCommand、OleDbConnection、OleDbDataAdapter这三个组件(在这三项组件的名称前的方框内打勾即可)。单击“确定”按钮,这三个组件就被添加到工具箱中了。,方法一:在Visual Studio.NET中建立连接,接下来,出现“数据适配器配置向导”对话框,点击“新建连接”按钮。出现“添加连接”对话框。可以执行“更改”选择数据源的类型。这里选择“其他”,然后点“确定”,接着,在OLE DB提供程序下选择:Microsoft Jet 4.0 OLE DB Provider,方法一:在Visual Stu
7、dio.NET中建立连接,点“数据链接”按钮。出现“数据链接属性”对话框,在“连接”选项卡中选择或输入数据库名称右边的小按钮中选取数据库文件。选好后,点“测试连接”,提示“测试连接成功”,方法一:在Visual Studio.NET中建立连接,点“确定”,回到“添加连接”对话框点“确定”,回到“数据适配器配置向导”对话框,可以查看连接字符串。点“下一步”,出现如图3对话框。这里请选择“是”(那么访问数据库时,将是相对路径,即.exe可执行文件和数据库文件将在同一个目录下),接着再点“下一步”,方法一:在Visual Studio.NET中建立连接,出现如图后,点“查询生成器”按钮。选择要用的表
8、,然后点“添加”,把要用的字段依次打勾。然后点“确定”。,方法一:在Visual Studio.NET中建立连接,回到如图对话框,点“下一步”,点“完成”。最终,窗体下方生成“OleDbDataAdapter1”和“OleDbConnection1”两个对象(如图)。,3,方法一:在Visual Studio.NET中建立连接,右键“OleDbDataAdapter1”,选择“生成数据集”,点“确定”后,生成数据集对象“DataSet11”,3,方法一:在Visual Studio.NET中建立连接,2、将数据源绑定到一个或多个显示控件上问题:什么样的控件可以做为数据源的显示控件?一般来说,凡
9、是具有DataBindings属性的控件都可做显示控件,典型的例子:TextBox、Label、ComboBox等控件,方法一:在Visual Studio.NET中建立连接,将数据源绑定控件的操作如下:在属性窗口中设置文本框的DataBindings属性打开DataBindings分类,单击Text属性,单击下拉箭头选择某个数据集对象中某个表的某个字段,方法一:在Visual Studio.NET中建立连接,3、编写一部分代码关键代码:利用数据适配器给数据集手动加载数据 OleDbDataAdapter1.Fill(Dataset11)上述代码可以放在某个命令按钮的单击事件过程中,也可放在窗
10、体的Load事件过程中,方法一:在Visual Studio.NET中建立连接,课堂实训,访问Access数据库显示,方法二:使用较多的代码ADO.NET对象结构,方法二:使用较多的代码,ADO.NET对象功能(访问数据库时要用到的对象及步骤)1、Connection对象负责连接数据库2、Command对象负责对数据库下达SQL命令3、在ADO.NET中,介于Dataset和Connection对象之间还有一个对象DataAdapter,负责传递数据。4、Dataset对象用来保存所查询到的数据记录,是一种非连接的数据缓存。,方法二:使用较多的代码,创建Connection对象时,可以使用2个
11、类:1、SqlConnection类:管理SQL Server 7.0或以上数据源的连接,该类位于System.Data.Sqlclient 命名空间。2、OledbConnection类:管理可通过OLEDB访问的数据源的连接,例如 Access数据库。该类位于System.Data.OLEDB 命名空间。同样,创建Command对象和DataAdapter对象时都有2个类可以选择,要看访问的数据源的类型。,方法二:使用较多的代码,方法二:使用较多的代码1、声明连接对象Dim Mycn As New OleDbConnectionMycn.ConnectionString=Provider=
12、Microsoft.Jet.OLEDB.4.0;Data Source=D:luo人力资源管理系统hrmbook.mdb;Persist Security Info=False2、声明命令对象Dim myCommand As New OleDbCommandmyCommand.CommandText=“select*from 职员基本信息表”myCommand.Connection=Mycn3、声明数据适配器对象Dim myDataAdapter As New OleDbDataAdaptermyDataAdapter.SelectCommand=myCommand4、声明数据集对象Dim m
13、yDataSet As New DataSet5、打开连接Mycn.Open()6、通过数据适配器填充已连接的数据源的数据到数据集中(一个数据适配器只能填充一张表)myDataAdapter.Fill(myDataSet,职员表)7、关闭连接Mycn.Close(),方法二:使用较多的代码,连接好数据库后,用代码绑定数据集到显示控件,如下所示:Me.TxtName.DataBindings.Add(“text”,myDataSet,“职员基本信息表.姓名)Me.TxtID.DataBindings.Add(“text”,myDataSet,“职员基本信息表.职员编号)其他要注意的地方:在类定义
14、的开头要指出数据访问对象所在的命名空间:Imports System.Data.OleDb,方法二:使用较多的代码(例子),例1:用较多代码访问数据库(请注意访问数据库的步骤,访问数据库时使用的是相对路径【数据库文件和可执行文件在同一个文件夹里】),数据库为Student.mdb,有一个Records表,该表字段为:编号,姓名,性别,出生日期,家庭住址,手机,Email,Oicq。,方法二:使用较多的代码(例子),例2:请注意定义连接等对象的代码和例1有所不同。说明:本例子并没有用到命令对象,请注意连接对象数据适配器对象的定义和赋值 1、声明连接字符串(访问该数据库时用的是绝对路径)Dim s
15、ConnString As String=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:VS2005ProjectWindowsApplication7binDebugStudent.mdb;Persist Security Info=False 2、声明连接对象 Dim Mycn As New OleDbConnection(sConnString)3、声明命令对象 Dim myCommand As OleDbCommand 4、声明数据适配器对象 Dim myDataAdapter As New OleDbDataAdapter 5、声明数据
16、集对象 Dim myDataSet As New DataSet 6、打开连接 Mycn.Open()7、通过数据适配器填充已连接的数据源的数据到数据集中(一个数据适配器只能填充一张表)Dim mySql As String mySql=select*from Records myDataAdapter=New OleDbDataAdapter(mySql,Mycn)myDataAdapter.Fill(myDataSet,Records)8、关闭连接 Mycn.Close()9、用代码绑定数据集到显示控件 Me.TextBox1.DataBindings.Add(Text,myDataSet
17、,Records.编号)Me.TextBox2.DataBindings.Add(Text,myDataSet,Records.姓名)Me.TextBox3.DataBindings.Add(Text,myDataSet,Records.性别)Me.TextBox4.DataBindings.Add(Text,myDataSet,Records.出生日期)Me.TextBox5.DataBindings.Add(Text,myDataSet,Records.家庭住址)Me.TextBox6.DataBindings.Add(Text,myDataSet,Records.手机)Me.TextBo
18、x7.DataBindings.Add(Text,myDataSet,Records.Email)Me.TextBox8.DataBindings.Add(Text,myDataSet,Records.Oicq),绝对路径,访问Access数据库显示,创建导航控件,访问Access数据库显示,创建导航控件的代码:首条Private Sub Button6_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button6.Click Me.BindingContext(DataSet11,职员基本信息表
19、).Position=0 End Sub最后一条 Private Sub Button7_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button7.Click Me.BindingContext(DataSet11,职员基本信息表).Position=Me.BindingContext(DataSet11,职员基本信息表).Count-1 End Sub 前一条 Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As
20、 System.EventArgs)Handles Button1.Click Me.BindingContext(DataSet11,职员基本信息表).Position-=1 End Sub下一条Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button2.Click Me.BindingContext(DataSet11,职员基本信息表).Position+=1 End Sub,关于Command对象,Command对象的主要属性:1、Connectio
21、n属性:设置用于执行命令的Connection对象。2、CommandText属性:设置被执行的SQL语句。下面两段代码的效果相同(声明命令对象有二种方法):,Dim sConnString As String=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:luo人力资源管理系统hrmbook.mdb;Persist Security Info=FalseDim Mycn As New OleDbConnection(sConnString)Dim myCom As OleDbCommand 此方法声明可以不用关键字New,当然用也可以Dim m
22、ySql As StringmySql=select sum(奖励金额)as 奖金,职员编号 from 职员奖励表“Mycom=New OleDbCommand(mySql,Mycn),Dim sConnString As String=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:luo人力资源管理系统hrmbook.mdb;Persist Security Info=FalseDim Mycn As New OleDbConnection(sConnString)Dim myCom As New OleDbCommand 此方法声明一定要用关
23、键字NewDim mySql As StringmySql=select sum(奖励金额)as 奖金,职员编号 from 职员奖励表“Mycom.Connection=MycnMycom.CommandText=mySql,关于Command对象,Command对象的方法:1、ExecuteNonQuery方法:执行一个SQL命令,但不返回结果,只返回一个值说明有多少行数据被处理。2、ExecuteReader方法:执行一个SQL命令,并生成DataReader对象作为结果返回。使用该方法时要先创建DataReader对象用来获取数据。案例见:DataBase.vb和frmSalary.vb
24、,关于DataReader对象,DataReader对象是基于连接的数据流,它一次只将一个记录导入内存,而不会将结果集的所有记录同时返回,因此可以避免耗费大量内存资源。1、Read方法:读取DataReader对象的下一行记录。详解:当DataReader对象首次打开时它被置于文件开始位置即第一行之前,当调用一次Read方法,DataReader才会移动到结果集的第一行处。以后每调用依次Read方法,DataReader都会移动到结果集的下一行处,直到Read方法返回False为止,表明此时查询无结果。2、GetType方法:将指定列的值作为指定类型获取。例如:GetString方法表示将取得
25、的字段数据设为字符串案例见:frmSalary.vb,DataReader对象举例1,DataReader对象举例2,Dim sConnString As String=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:luo人力资源管理系统hrmbook.mdb;Persist Security Info=FalseDim Mycn As New OleDbConnection(sConnString)Dim myCom As OleDbCommandMycn.Open()Dim mySql,strSQL As StringmySql=select
26、 sum(奖励金额)as 奖金,职员编号 from 职员奖励表“Mycom=New OleDbCommand(mySql,Mycn)Dim dr As OleDbDataReaderdr=Mycom.ExecuteReaderWhile(dr.Read()Dim jine As Double=dr.GetDouble(0)Dim id As String=dr.GetString(1)strSQL=“update 月工资统计表 set 奖金=”+jine.ToString()+“where 职 员编号=&id&“”End Whiledr.Close()Mycom=New OleDbComman
27、d(strSQL,Mycn)Mycom.ExecuteNonQuery()注意:该案例只执行了月工资统计表最后一条记录的更新,如何完善程序?见DataBase.vb和frmSalary.vb(通过数组知识和事务知识),访问Access数据库增加,访问Access数据库增加,例子1:程序运行界面图,访问Access数据库修改,Private Sub btnUpdate_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles btnUpdate.Click Try Dim str As String=updat
28、e Records set 姓名=&Me.TextBox2.Text&,性别=&Me.TextBox3.Text&,出生日期=&Me.TextBox4.Text&,家庭住址=&Me.TextBox5.Text&,手机=&Me.TextBox6.Text&,Email=&Me.TextBox7.Text&,Oicq=&Me.TextBox8.Text&where 编号=&Me.TextBox1.Text&Dim mycom As OleDb.OleDbCommand mycom=New OleDb.OleDbCommand(str,Me.OleDbConnection1)Me.OleDbConn
29、ection1.Open()mycom.ExecuteNonQuery()Me.DataSet11.Clear()Me.OleDbDataAdapter1.Fill(Me.DataSet11,Records)Me.OleDbConnection1.Close()MsgBox(记录修改成功!)Catch ex As Exception Me.OleDbConnection1.Close()MsgBox(ex.Message)End Try End Sub,修改记录时,主键字段不可更改,因此,该SQL语句有一个where条件语句,访问Access数据库删除,Private Sub btnDelet
30、e_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles btnDelete.Click Try Dim str As String=delete from Records where 编号=&Me.TextBox1.Text&Dim mycom As OleDb.OleDbCommand mycom=New OleDb.OleDbCommand(str,Me.OleDbConnection1)Me.OleDbConnection1.Open()mycom.ExecuteNonQuery()Me.Data
31、Set11.Clear()Me.OleDbDataAdapter1.Fill(Me.DataSet11,Records)Me.OleDbConnection1.Close()MsgBox(记录删除成功!)Catch ex As Exception Me.OleDbConnection1.Close()MsgBox(ex.Message)End Try End Sub,关于DataGridView控件,DataGridView控件具有极高的可配置性和可扩展性,它提供大量的属性、方法和事件,可以用来对该控件的外观和行为进行自定义。当需要在Windows窗体应用程序中显示表格数据时,应首先考虑使用D
32、ataGridView控件,然后再考虑使用其他控件(例如DataGrid)。一般设置两个属性:DataSource:某个数据集对象 DataMember:该数据集对象的某个表,关于DataGrid控件,DataGrid控件用于显示数据表中的数据,该控件可用来显示单个表,也可以显示多个不相关的表,也可以显示多个相关的表。具体的用法详见“任务七”,若工具箱中找不到DataGrid控件,可以在“所用 Windows窗体”分组工具箱中,右键,然后选择“选择项”,在出现的窗口中,选择“.NET Framework组件”选项卡,找到“DataGrid”然后在其前面打勾。然后点“确定”。那么DataGrid
33、就添加到工具箱中。,关于DataView,DataView类:表示用于排序、筛选、搜索和编辑的 表(DataTable)的可绑定数据的自定义视图。创建 DataView 对象的方法:方法一:使用 DataView 构造函数 Dim custDV As DataView=New DataView(custDS.Tables(Customers)方法二:创建对 DataTable 的 DefaultView 属性的引用 Dim custDV As DataView=custDS.Tables(Customers).DefaultView,关于DataView,DataView对象的属性:Sort属
34、性:获取或设置 DataView 的一个或多个排序。例:Dataview1.Sort=“Name Asc”Dataview1.Sort=“Name Desc”RowFilter属性:获取或设置用于筛选在 DataView 中查看哪些行的表达式。例:Dataview1.RowFilter=“Name like%陈%”RowStateFilter属性:获取或设置用于 DataView 中的行状态筛选器。例:Dataview1.RowStateFilter=DataViewRowState.CurrentRowsDataview1.RowStateFilter=DataViewRowState.Mo
35、difiedOriginal _所有 Modified 行的 Original 行版本。,关于DataView的一个例子,若工具箱中找不到DataView控件,可以在“所用 Windows窗体”分组工具箱中,右键,然后选择“选择项”,在出现的窗口中,选择“.NET Framework组件”选项卡,找到“DataView”然后在其前面打勾。然后点“确定”。那么DataView就添加到工具箱中。,关于DataView的一个例子,双击“DataView”控件后,在当前窗体下方会出现“DataView1”对象,在DataView1控件的属性窗口中,设置它的Tabel属性:某个数据集对象某个表接着把Da
36、taViewGrid控件的DataSource属性设置为DataView1。这样就可以使用DataView的属性:,课堂实训,实训1:创建一个Access数据库student,建一表Records,该表字段(字段类型均为文本,编号为主键):编号,姓名,性别,出生日期,家庭住址,手机,Email,Oicq。在VB.NET环境中创建一个访问该数据库的系统(包括显示、修改、删除、增加和保存等功能)。如图所示界面。实训2:利用数据库访问知识完善真实登录窗体frmlogin的代码,书面作业,工资管理系统 具体要求请看Word文档,补充内容,访问数据库的另外一种方法具体例子及内容参考文件夹“任务三相关例子及代码”文件夹里的,