




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VB.NET程序设计,任务三 访问Access数据库,学习目标,1、了解数据库、表、字段、记录等基本概念 2、了解使用Access系统创建Access数据库 3、掌握访问Access数据库的方法,数据库术语,数据库(Database):存储于文件中的有组织的信息集合 数据表(Table):由行和列组成的信息集合 字段(Field):存储于数据库中的信息的类别 记录(Record):有关一个特定客户或企业的所有信息叫一条记录,ADO.NET,1、VB.NET并非是用来创建新数据库的,而是用于显示、分析和操作数据库中的信息。 2、 ADO.NET是VB.NET提供的一种新的访问数据库的数据模型(或叫数据访问工具),通过这种数据模型可以访问更多格式的数据库(如Access、FoxPro、Paradox、Oracle、SQL Server等);也不管这些数据库放在什么位置都能访问(本地或是网上)。 3、组成ADO.NET的是一些类,这些类位于System.Data命名空间中,他们提供了连接数据库、读取数据库和更新数据库等操作。,预备知识结构化查询语言SQL,SQL是一种标准化的数据库查询语言,虽说是一种查询语言,但它可完成对数据库的各种操作,包括数据的查询、增加、修改、删除以及其他操作。 SQL主要语句: Select语句、Insert语句、Update语句、 Delete语句。,预备知识结构化查询语言SQL,Select语句的语法格式: Select 字段名 From 数据表名 Where 条件 举例: Select * From 学生信息 Select * From 学生信息 Where 姓名=“李丽” Select 姓名 From 学生信息 Where 姓名=“李丽” select * from student1 where 学号=3 select * from student1 where 学号 Between 5 And 10,预备知识结构化查询语言SQL,Select语句举例: select * from student1 where 姓名 like “刘*” select * from 书名 where 书籍类别 In (“数据库”,”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=005 delete * from StuInfo where id = 18,使用Access创建数据库,操作步骤: 1、启动Access办公软件 2、文件/新建 3、双击“使用设计器创建表” 4、设置主键:右击某个字段名,选“主键” 5、添加数据:双击表名,直接添加数据,保存,访问Access数据库显示,访问Access数据库显示,方法一:在Visual Studio.NET中建立连接 1、从工具箱中的“数据”标签中双击OleDbDataAdapter对象 如果工具箱中的“数据”标签中没有OleDbDataAdapter对象,则可以右击“数据”工具箱中某控件例如DataSet控件,从弹出的快捷菜单中执行选择项命令(如图),打开“选择工具箱项”对话框,选择“.NET Framework组件”选项卡,从中选择OleDbCommand、OleDbConnection、OleDbDataAdapter这三个组件(在这三项组件的名称前的方框内打勾即可)。单击“确定”按钮,这三个组件就被添加到工具箱中了。,方法一:在Visual Studio.NET中建立连接,接下来,出现“数据适配器配置向导”对话框,点击“新建连接”按钮。出现“添加连接”对话框。可以执行“更改”选择数据源的类型。这里选择“其他”,然后点“确定”,接着,在OLE DB提供程序下选择: Microsoft Jet 4.0 OLE DB Provider,方法一:在Visual Studio.NET中建立连接,点“数据链接”按钮。出现“数据链接属性”对话框,在“连接”选项卡中选择或输入数据库名称右边的小按钮中选取数据库文件。选好后,点“测试连接”,提示“测试连接成功”,方法一:在Visual Studio.NET中建立连接,点“确定”,回到“添加连接”对话框 点“确定”,回到“数据适配器配置向导”对话框,可以查看连接字符串。 点“下一步”,出现如图3对话框。这里请选择“是”(那么访问数据库时,将是相对路径,即.exe可执行文件和数据库文件将在同一个目录下),接着再点“下一步”,方法一:在Visual Studio.NET中建立连接,出现如图后,点“查询生成器”按钮。选择要用的表,然后点“添加”,把要用的字段依次打勾。然后点“确定”。,方法一:在Visual Studio.NET中建立连接,回到如图对话框,点“下一步”,点“完成”。最终,窗体下方生成“OleDbDataAdapter1”和“OleDbConnection1”两个对象(如图)。,3,方法一:在Visual Studio.NET中建立连接,右键“OleDbDataAdapter1”,选择“生成数据集”,点“确定”后,生成数据集对象“DataSet11”,3,方法一:在Visual Studio.NET中建立连接,2、将数据源绑定到一个或多个显示控件上 问题:什么样的控件可以做为数据源的显示控件? 一般来说,凡是具有DataBindings属性的控件都可做显示控件,典型的例子: TextBox 、Label、ComboBox等控件,方法一:在Visual Studio.NET中建立连接,将数据源绑定控件的操作如下: 在属性窗口中设置文本框的DataBindings属性 打开DataBindings分类,单击Text属性,单击下拉箭头 选择某个数据集对象中某个表的某个字段,方法一:在Visual Studio.NET中建立连接,3、编写一部分代码 关键代码:利用数据适配器给数据集手动加载数据 OleDbDataAdapter1.Fill(Dataset11) 上述代码可以放在某个命令按钮的单击事件过程中,也可放在窗体的Load事件过程中,方法一:在Visual Studio.NET中建立连接,课堂实训,访问Access数据库显示,方法二:使用较多的代码 ADO.NET对象结构,方法二:使用较多的代码,ADO.NET对象功能(访问数据库时要用到的对象及步骤) 1 、Connection对象负责连接数据库 2、 Command对象负责对数据库下达SQL命令 3、在ADO.NET中,介于Dataset和Connection对象之间还有一个对象DataAdapter,负责传递数据。 4、Dataset对象用来保存所查询到的数据记录,是一种非连接的数据缓存。,方法二:使用较多的代码,创建Connection对象时,可以使用2个类: 1、SqlConnection类:管理SQL Server 7.0或以上数据源的连接,该类位于System.Data.Sqlclient 命名空间。 2、OledbConnection类:管理可通过OLEDB访问的数据源的连接,例如 Access数据库。该类位于System.Data.OLEDB 命名空间。 同样,创建Command对象和DataAdapter对象时都有2个类可以选择,要看访问的数据源的类型。,方法二:使用较多的代码,连接好数据库后,用代码绑定数据集到显示控件,如下所示: Me. TxtName.DataBindings.Add(“text”, myDataSet, “职员基本信息表.姓名“) Me. TxtID.DataBindings.Add(“text”, myDataSet, “职员基本信息表.职员编号“) 其他要注意的地方: 在类定义的开头要指出数据访问对象所在的命名空间: Imports System.Data.OleDb,方法二:使用较多的代码(例子),例1:用较多代码访问数据库(请注意访问数据库的步骤,访问数据库时使用的是相对路径【数据库文件和可执行文件在同一个文件夹里】),数据库为Student.mdb,有一个Records表,该表字段为:编号,姓名,性别,出生日期,家庭住址,手机,Email,Oicq。,方法二:使用较多的代码( 例子),例2:请注意定义连接等对象的代码和例1有所不同。 说明:本例子并没有用到命令对象,请注意连接对象数据适配器对象的定义和赋值 1、声明连接字符串(访问该数据库时用的是绝对路径) Dim sConnString 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、声明数据集对象 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, “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.TextBox7.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, “职员基本信息表“).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 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、Connection属性:设置用于执行命令的Connection对象。 2、CommandText属性:设置被执行的SQL语句。 下面两段代码的效果相同(声明命令对象有二种方法):,Dim sConnString As String = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:luo人力资源管理系统hrmbook.mdb;Persist Security Info=False“ Dim Mycn As New OleDbConnection(sConnString) Dim myCom As OleDbCommand 此方法声明可以不用关键字New,当然用也可以 Dim mySql As String mySql = “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=False“ Dim Mycn As New OleDbConnection(sConnString) Dim myCom As New OleDbCommand 此方法声明一定要用关键字New Dim mySql As String mySql = “select sum(奖励金额) as 奖金, 职员编号 from 职员奖励表“ Mycom.Connection = Mycn Mycom.CommandText = mySql,关于Command对象,Command对象的方法: 1、ExecuteNonQuery方法:执行一个SQL命令,但不返回结果,只返回一个值说明有多少行数据被处理。 2、ExecuteReader方法:执行一个SQL命令,并生成DataReader对象作为结果返回。使用该方法时要先创建DataReader对象用来获取数据。 案例见:DataBase.vb和frmSalary.vb,关于DataReader对象,DataReader对象是基于连接的数据流,它一次只将一个记录导入内存,而不会将结果集的所有记录同时返回,因此可以避免耗费大量内存资源。 1、Read方法:读取DataReader对象的下一行记录。 详解:当DataReader对象首次打开时它被置于文件开始位置即第一行之前,当调用一次Read方法, DataReader才会移动到结果集的第一行处。以后每调用依次Read方法, DataReader都会移动到结果集的下一行处,直到Read方法返回False为止,表明此时查询无结果。 2、GetType方法:将指定列的值作为指定类型获取。例如:GetString方法表示将取得的字段数据设为字符串 案例见: 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=False“ Dim Mycn As New OleDbConnection(sConnString) Dim myCom As OleDbCommand Mycn.Open() Dim mySql , strSQL As String mySql = “select sum(奖励金额) as 奖金, 职员编号 from 职员奖励表“ Mycom=New OleDbCommand(mySql,Mycn) Dim dr As OleDbDataReader dr = Mycom.ExecuteReader While (dr.Read() Dim jine As Double = dr.GetDouble(0) Dim id As String = dr.GetString(1) strSQL = “update 月工资统计表 set 奖金=” + jine.ToString() + “ where 职 员编号=“ & id & “” End While dr.Close() Mycom=New OleDbCommand(strSQL,Mycn) Mycom.ExecuteNonQuery() 注意:该案例只执行了月工资统计表最后一条记录的更新,如何完善程序?见DataBase.vb和frmSalary.vb(通过数组知识和事务知识),访问Access数据库增加,例子1,访问Access数据库增加,例子1:程序运行界面图,访问Access数据库增加,Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.BindingContext(DataSet11, “职员基本信息表“).AddNew() End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Dim sql As String = “insert into 职员基本信息表(姓名,职员编号) values(“ & TextBox1.Text & “,“ & TextBox2.Text & “)“ Dim mycommand As System.Data.OleDb.OleDbCommand mycommand = New System.Data.OleDb.OleDbCommand(sql, OleDbConnection1) OleDbConnection1.Open() mycommand.ExecuteNonQuery() OleDbConnection1.Close() End Sub,例子2,步骤:1 、添加一空记录 2 、录入内容后保存到数据库,访问Access数据库修改,Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click Try Dim str As String = “update 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.OleDbConnection1.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条件语句,例子1,访问Access数据库修改,Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click Dim sql As String = “update 职员基本信息表 set 姓名 =“ & TextBox1.Text & “,职员编号=“ & TextBox2.Text & “ where 职员编号=“ & TextBox2.Text & “ Dim mycommand As System.Data.OleDb.OleDbCommand mycommand = New System.Data.OleDb.OleDbCommand(sql, OleDbConnection1) OleDbConnection1.Open() mycommand.ExecuteNonQuery() OleDbConnection1.Close() End Sub,例子2,访问Access数据库删除,例子1,Private Sub btnDelete_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.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,访问Access数据库删除,Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim sql As String = “delete * from 职员基本信息表 where 职员编号=“ & TextBox2.Text & “ Dim curPos As Integer = Me.BindingContext(DataSet11, “职员基本信息表“).Position Dim mycommand As System.Data.OleDb.OleDbCommand mycommand = New System.Data.OleDb.OleDbCommand(sql, OleDbConnection1) OleDbConnection1.Open() myCommand.ExecuteNonQuery() DataSet11.Clear() OleDbDataAdapter1.Fill(DataSet11, “职员基本信息表“) If curPos = Me.BindingContext(DataSet11, “职员基本信息表“).Count - 1 Then curPos = Me.BindingContext(DataSet11, “职员基本信息表“).Count - 1 End If Me.BindingContext(DataSet11, “职员基本信息表“).Position = curPos OleDbConnection1.Close() End Sub,例子2,关于DataGrid控件,DataGrid控件用于显示数据表中的数据,该控件可用来显示单个表,也可以显示多个不相关的表,也可以显示多个相关的表。具体的用法详见“任务七”,若工具箱中找不到DataGrid控件,可以在“所用 Windows窗体”分组工具箱中,右键,然后选择“选择项”,在出现的窗口中,选择“.NET Framework组件”选项卡,找到“DataGrid”然后在其前面打勾。然后点“确定”。那么DataGrid就添加到工具箱中。,关于DataGridView控件,DataGridView控件具有极高的可配置性和可扩展性,它提供大量的属性、方法和事件,可以用来对该控件的外观和行为进行自定义。 当需要在Windows窗体应用程序中显示表格数据时,应首先
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文件存储柜使用表格
- 2025年艺术与设计专业综合素质考试试卷及答案
- 2025年系统分析与设计能力考试题及答案
- 2025年社会心理学基础知测试卷及答案
- 2025年轻工业制造工艺基础考试试题及答案
- 2025年建筑技术与管理专业考试试题及答案
- 2025年传统医学与现代科技在健康管理中的应用考试试卷及答案
- 物资公司收购管理制度
- 特殊体质教育管理制度
- 特殊病人液体管理制度
- JJF1033-2023计量标准考核规范
- 专题四第1课二、《智能家居系统》说课稿 2023-2024学年青岛版(2018)初中信息技术八年级上册
- 江西省赣州市兴国三中重点达标名校2025届中考试题猜想生物试卷含解析
- 2025海南省交通投资控股限公司招聘30人高频重点提升(共500题)附带答案详解
- 湖北澜图工程设计有限公司招聘笔试冲刺题2025
- 《中国文化导论》课程考试复习题库及答案
- 《江苏省民用建筑工程消防验收常见问题解析及防治指南》2023版
- DB3701T 29-2022 智慧中药房建设与运行规范
- 2024-2025学年上学期广州六年级英语期末模拟卷1
- 2024新沪教版英语(五四学制)七年级上单词表 (英译汉)
- 金蝶KIS专业版完整操作手册
评论
0/150
提交评论