版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库技术基础SQL Server & VB.NET 数据库技术基础本书目录1第八章 ADO.NET与数据库访问技术 学习目标:ADO.NET体系结构VB.NET与SQL Server数据库的连接访问数据库常用方法ADO.NET体系结构ADO.NET数据库访问过程ConnectionDataBaseDataAdapterSelectCommandFillUpdateDataSetInsertCommandUpdateCommandDeleteCommand.NET Framework 数据提供程序 .NET Framework 数据提供程序是ADO.NET 结构的另一个核心元素,其组件的设计目
2、的相当明确:实现对底层数据源的访问。这些组件包括:Connection、Command、DataAdapter和DataReader对象。Connection 对象提供与数据源的连接。Command 对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。DataReader 从数据源中提供高性能的数据流。最后DataAdapter 提供连接 DataSet 对象和数据源的桥梁。DataAdapter 使用 Command 对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使对 DataSet 中数据的更改与数据源保持一致。ADO .NE
3、T的四类数据提供程序Microsoft SQL .NET 数据提供程序 该提供程序使 .NET 应用程序可以直接访问 Microsoft SQL Server 数据库。System.Data.SqlClientMicrosoft OLE DB .NET 数据提供程序 该提供程序使 .NET 应用程序可以使用它们的本机 OLE DB 提供程序访问数据库。 System.Data.OleDbMicrosoft ODBC .NET 数据提供程序 该提供程序使 .NET 应用程序可以通过使用它们的 ODBC 驱动程序访问数据库。System.Data.OdbcMicrosoft Oracle .NET
4、 数据提供程序 该提供程序使 .NET 应用程序可以访问 Oracle 数据库。System.Data. OracleClient.NET数据提供程序对象模型 .NET Data Provider(数据提供程序)ConnectionDataAdapterDeleteCommandUpdateCommanInsertCommandSelectCommandCommandDataReaderADO.NET DataSet ADO.NET DataSet 是 ADO.NET 的断开式结构的核心组件。DataSet 的设计目的很明确:为了实现独立于任何数据源的数据访问。因此,它可以用于多种不同的数据源
5、,用于 XML 数据,或用于管理应用程序本地的数据。DataSet 是数据的内存驻留表示形式,无论数据源是什么,它都会提供一致的关系编程模型。DataSet 是包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及主键、外键、约束和有关 DataTable 对象中数据的关系信息组成。Connection对象 OLEDB.NET数据提供程序Connection对象连接参数属性说明Provider指定OLEDB ProviderData Source指定数据库服务器名称或位置Initial Catalog指定数据库名User ID用户帐户Password用户密码Intigra
6、ted SecuitySSPI或TrueSqlConnection对象 SQL Server登录模式: Initial Catalog= mydb;DataSource=myServer;User ID=sa;password=;SQL.NET数据提供程序Connection对象连接参数属性说明Data Source指定数据库服务器名称或位置Initial Catalog或DataBase指定数据库名User ID用户帐户Password用户密码SqlConnection对象 Windows登录模式:Initial Catalog= mydb;DataSource=myServer;Integ
7、rated Security=True;SQL.NET数据提供程序Connection对象连接参数属性说明Data Source指定数据库服务器名称或位置Initial Catalog 或DataBase指定数据库名Intigrated SecuitySSPI或TrueDataAdapter对象 DataAdapter 是连接 DataSet 对象和数据源的桥梁。DataAdapter 使用 Command 对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使对 DataSet 中数据的更改与数据源保持一致。如何验证?创建Connection、DataAdapter、D
8、ataset对象方法一: 从数据源直接拖放数据表,在此过程中由系统自动生成方法二: 通过代码创建基于断开式访问方法设计步骤:(1)创建SqlConnection对象(2)创建SqlDataAdapter对象(3)创建DataSet对象(4)为控件指定数据源用代码创建SqlConnection对象 Dim myconn As New SqlConnection (Initial Catalog=university; Data Source=(local); Integrated Security=True;) Dim myconn As New SqlConnection (Initial C
9、atalog= mydb; DataSource=myServer; User ID=sa; Password=; ) 用代码创建DataAdapter、Dataset对象 创建数据适配器 Dim mysql As String = “select * from student Dim myadapter As New SqlDataAdapter(mysql, myconn) 创建数据集 Dim mydataset As New DataSet myadapter.Fill(mydataset, “student) 只能取“student”这个表名吗?断开式访问模型实例Private Sub
10、 Form1_Load() Handles MyBase.Load Dim myconn As New SqlConnection(“initial catalog=university;data source=.; integrated security=true;) Dim myadapter As New SqlDataAdapter(select * from student, myconn) Dim mydataset As New DataSet myadapter.Fill(mydataset) Me.DataGridView1.DataSource = mydataset.Ta
11、bles(0)End Sub上述最后两行代码可以改写为:myadapter.Fill(mydataset,”student”)DataGridView1.DataSource = mydataset.Tables(“student”)DataSet访问结构 库. 表 . 行 . 列Dataset.Tables.Rows.Itemmydataset.tables(“表名”).rows(i).item(j)mydataset.tables(“student”).rows(1).item(3)后台数据库设计CREATE TABLE CasePavilion( CaseNo CHAR(3) not n
12、ull Primary Key, CaseTitle VARCHAR(30), Feature VARCHAR(500), Highlight VARCHAR(500) )图片如何存储?前台功能代码设计Imports System.Data.SqlClientPublic Class Form1 Dim myconn As New SqlConnection(initial catalog=UBPA; data source=.SQLExpress;integrated security=SSPI;) Dim myadapter As New SqlDataAdapter(select * f
13、rom casepavilion, myconn) Dim mydataset As New Data.DataSetPrivate Sub Form1_Load() myadapter.Fill(mydataset, casecity) Me.ComboBox1.DataSource = mydataset.Tables(casecity) Me.ComboBox1.DisplayMember = “CaseTitle” Me.AxWindowsMediaPlayer1.URL = Application.StartupPath & casecity.mp3 Me.AxWindowsMedi
14、aPlayer1.Ctlcontrols.play()End Sub前台功能代码设计Private Sub ComboBox1_SelectedIndexChanged() Label1.Text = mydataset.Tables(casecity). Rows(Cint(ComboBox1.SelectedIndex).Item(1) TextBox1.Text =mydataset.Tables(casecity). Rows(CInt(Me.ComboBox1.SelectedIndex).Item(3) TextBox2.Text =mydataset.Tables(casecit
15、y). Rows(CInt(Me.ComboBox1.SelectedIndex).Item(2) PictureBox1.Image = Image.FromFile(Application.StartupPath & images & mydataset.Tables(casecity).Rows(CInt(Me.ComboBox1.SelectedIndex). Item(0) & .jpg)End Sub数据绑定 数据绑定是绑定技术中使用最频繁,也是最为重要的技术,也可以说是各种.Net开发语言开发数据库应用程序最需要掌握的基本知识之一。数据绑定之所以很重要,是因为数据绑定技术使得界面
16、上的所有控件访问数据源数据时可以步调一致。图8.3.1 例8.6程序运行结果(1) 建立SQLServerUBPACases表与t控件之间的数据绑定关系 Public mybind As BindingManagerBase SqlDataAdapter2.Fill(DataSet11.UBPACases) mybind = Me.BindingContext(DataSet11, UBPACases) (如果是.NET2005以上版本,直接用拖放的绑定数据源)(2) 用绑定对象的position属性实现UBPACases表的数据浏览 mybind.Position = 0 /到头 mybin
17、d.Position = mybind.Position 1 /往前翻 mybind.Position = mybind.Position + 1 /往后翻 mybind.Position = mybind.Count 1 /到尾(3) 用绑定对象的下列方法实现UBPACases表的更新操作 mybind.AddNew() /插入一条记录 mybind.RemoveAt(mybind.Position) /删除当前记录 mybind.EndCurrentEdit() /结束当前更新状态 mybind.CancelCurrentEdit() /取消当前编辑修改 mybind.EndCurrent
18、Edit() SqlDataAdapter1.Update(DataSet11.UBPACases)数据浏览操作StudentBindingSource.MoveFirst()StudentBindingSource.MovePrevious()StudentBindingSource.MoveNext()StudentBindingSource.MoveLast()更新操作StudentBindingSource.AddNew()StudentBindingSource.RemoveCurrent()StudentBindingSource.CancelEdit()Me.Validate()
19、StudentBindingSource.EndEdit()StudentTableAdapter.Update(Me.UniversityDataSet.student)2005以上版本 mybind=BindingContext(StudentBindingSource) (如果是.NET2005以上版本,直接用拖放的绑定数据源)通过代码实现数据绑定 数据绑定的常规方法是:首先根据应用需求,设计界面;然后在应用程序开始处定义一个绑定数据源对象,并指明其数据源为数据集中的对应表;接着将用于显示数据的控件分别绑定到对应的数据源,这样所有数据控件的显示都可以用这个绑定数据源对象来编程设计,从而完
20、成数据导航功能。数据绑定设计步骤1. 绑定对象的定义 Public mybind As BindingSource2. 设定绑定对象的数据源 mybind.DataSource=数据集名称 mybind.DataMember=数据表名称3. 将控件和对应数据源绑定 控件.DataBindings.Add(New Binding(Text, mybind, 属性名, True)控件名称控件属性绑定数据表属性名数据绑定实例例8.7 用代码实现城市最佳实践区建设案例的数据访问。Imports System.Data.SqlClientPublic Class Form4 Dim myconn As
21、New SqlConnection(Data Source=.;Initial Catalog=UBPA;Integrated Security=True;) Dim myadapter As New SqlDataAdapter(SELECT * FROM UBPACases, myconn) Dim mydataset As New DataSet Dim mybind As New BindingSource /定义绑定数据源对象 Private Sub Form4_Load() /生成数据集 myadapter.Fill(mydataset, UBPACases) /为绑定数据源对象设
22、置数据源 mybind.DataSource = mydataset mybind.DataMember = UBPACases /为控件设置要绑定的数据源中对应表的属性 TextBox1.DataBindings.Add(New Binding(Text, mybind, 场馆名称, True) TextBox2.DataBindings.Add(New Binding(Text, mybind, 案例名称, True) TextBox3.DataBindings.Add(New Binding(Text, mybind, 城市, True) TextBox4.DataBindings.Ad
23、d(New Binding(Text, mybind, 造型亮点与案例主题, True) TextBox5.DataBindings.Add(New Binding(Text, mybind, 案例位置, True) End Sub数据-控件绑定实现mybind.MoveNext() mybind.MoveLast() mybind.AddNew() mybind.RemoveCurrent() mybind.MoveFirst()mybind.MovePrevious() 保存更新的编程实现Private Sub Button7_Click() mybind.EndEdit() /用SqlC
24、ommandBuilder对象生成数据适配器myadapter对应的三条更新命令, Dim cmd As New SqlCommandBuilder(myadapter) /然后通过调用myadapter的Update方法将前台窗体的数据更新回填到物理数据库。 myadapter.Update(mydataset.Tables(UBPACases) End SubCommand对象 建立连接后,可以通过Command对象执行SQL命令,从数据源(比如SQL Server)中返回结果。在创建Command对象时,需要指定一个要在数据源上执行的SQL语句和Connection对象。Command对
25、象的SQL语句可以通过CommandText属性进行查询和修改。 Command对象的执行方法 执行方式执行结果ExecuteReader 返回结果为一个数据流,即生成一个SqlDataReader对象,其中存放着 Command命令执行的一个当前的结果行。ExecuteScalar 执行查询,并返回查询的结果集中第一行的第一列,即只返回一个单值。ExecuteNonQuery 在不使用 DataSet的情况下直接更改数据库中的数据,用于不返回值的命令执行。怎样合理使用好 Command对象?1、通过显式连接,进行COMMAND的执行读操作,对应数据查询功能,执行方式为:ExecuteRead
26、er()ExecuteScalar ()写操作,对应数据更新功能,执行方式为:ExecuteNonQuery()2、通过隐式连接,进行COMMAND的执行DataAdapter的Fill和Update方法在连接关闭的情况下自动打开为相关命令属性指定的连接。 应用实例例:求SC中所有选课学生的平均成绩。SqlCommand、ExecuteScalarPrivate Sub Form1_Load() Handles MyBase.Load Dim sql As String = select avg(score) from scDim myconn As New SqlConnection(Ini
27、tial Catalog=学生选课;Data_ Source=(local);Integrated Security=SSPI;) Dim mycmd As New SqlCommand(sql, myconn) Dim avg As Integer = 0 myconn.Open() avg = mycmd.ExecuteScalar() myconn.Close() MsgBox(平均成绩= & avg)End SubSQL_insert命令的执行Private Sub Button1_Click() Handles Button1.Click Dim myconn = New SqlCl
28、ient.SqlConnection(integrated security=SSPI;data source=.;initial catalog=tjdb) Dim mysql As String = insert into sc values( & Me.TextBox1.Text & , & Me.TextBox2.Text & , & Val(Me.TextBox3.Text) & ) Dim mycmd As New SqlClient.SqlCommand(mysql, myconn) myconn.open() Try mycmd.ExecuteNonQuery() Catch
29、ex As Exception MsgBox(ex.Message) End Try myconn.close()End SubSQL_delete命令的执行Private Sub Button2_Click() Handles Button2.Click Dim myconn = New SqlClient.SqlConnection (integrated security=SSPI; data source=.; initial catalog=tjdb) Dim mysql As String = delete from sc where snum= & Me.TextBox4.Tex
30、t & and cnum= & Me.TextBox5.Text & Dim mycmd As New SqlClient.SqlCommand(mysql, myconn) myconn.open() mycmd.ExecuteNonQuery() myconn.close()End SubADO.NET数据库访问技术 数据库技术与应用41SqlCommand与存储过程的调用无参数存储过程的执行Private Sub Form1_Load() Handles MyBase.LoadDim myconn As New SqlConnection(Initial Catalog=学生选课;Dat
31、a Source=.;Integrated Security=SSPI;) Dim mycmd As New SqlCommand(“sc_avg, myconn) mycomm.CommandType = CommandType.StoredProcedure Dim avg As Integer = 0 myconn.Open() avg = mycmd.ExecuteScalar() myconn.Close() MsgBox(平均成绩= & avg)End SubCreate proc sc_avgAsSelect avg(score) from sc有输入参数存储过程的执行 Priv
32、ate Sub Button6_Click() Handles Button6.Click Dim avg As Integer Dim myconn = New SqlClient.SqlConnection(integrated security=SSPI;data source=.;initial catalog=tjdb) Dim mycmd As New SqlClient.SqlCommand(get_snum_avg, myconn) mycmd.CommandType = CommandType.StoredProcedure Dim _snum As New SqlClien
33、t.SqlParameter(_snum, SqlDbType.NChar, 10) mycmd.Parameters.Add(_snum) _snum.Value = TextBox4.Text myconn.open() avg = mycmd.ExecuteScalar() MsgBox(avg) myconn.close() End Subcreate proc get_snum_avg_snum char(10)as select avg(score) from sc where snum=_snum有输入、输出参数的存储过程的执行 Private Sub Button7_Click
34、() Handles Button7.Click Dim myconn = New SqlClient.SqlConnection(integrated security=SSPI; data source=.;initial catalog=tjdb) Dim mycmd As New SqlClient.SqlCommand(get_cnum_max, myconn) mycmd.CommandType = CommandType.StoredProcedure Dim _cnum = New SqlClient.SqlParameter(_cnum, SqlDbType.NChar, 1
35、0) mycmd.Parameters.Add(_cnum) mycmd.Parameters(_cnum).Value = TextBox5.Text Dim _max As New SqlClient.SqlParameter(_max, SqlDbType.Decimal, 4) mycmd.Parameters.Add(_max) _max.Direction = ParameterDirection.Output myconn.open() mycmd.ExecuteScalar() TextBox6.Text = mycmd.Parameters(“_max”).Value 取值方
36、法一 TextBox6.Text = _max.Value 取值方法二 myconn.close() End Subcreate proc get_cnum_max_cnum char(10),_max decimal outputas select _max=max(score) from sc where cnum=_cnum思考题 给定学号,查找指定学生的平均成绩。分析:Step 1 在SQL Server上创建存储过程sc_proc,带有一个输入参数_snum 和一个输出参数_avg 。Step 2 在VB.NET上设计带有一个文本输入框或其他输入控件,用于在运行时获得界面用户输入 ,
37、以及一个输出控件用于显示存储过程调用的执行结果。存储过程create proc sc_proc_snum char(10),_avg int outputas select _avg=avg(score) from sc where snum=_snum group by snum Private Sub Button3_Click( ) Handles Button3.Click 带有输出参数的存储过程调用 Dim myconn As New SqlClient.SqlConnection(Initial Catalog=tjdb;Data Source=.;Integrated Security=SSPI;) ) Dim mycmd As New SqlCommand mycmd.Connection = myconn mycmd.Comma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026云南迪庆州德钦县雨崩村运营管理有限公司总经理市场化招聘1人备考题库(含答案详解)
- 2026贵州遵义仁怀市喜丰农业有限责任公司招聘3人备考题库含答案详解(精练)
- 2026云南大学附属医院社会招聘非事业编制工作人员51人备考题库附答案详解(综合题)
- 2026年天健先进生物医学实验室招聘工作人员(博士)3名备考题库附答案详解(完整版)
- 2026广西来宾忻城县果遂镇卫生院中医康复科医师招聘1人备考题库附答案详解(黄金题型)
- 2026广东广州市海珠区事业单位定向招聘社区党组织书记11人备考题库含答案详解(培优b卷)
- 2026山东济宁市高新区幼儿园招聘1人备考题库及完整答案详解一套
- 2026四川达州大竹县国有资产事务服务中心县属国有企业招聘工作人员28人备考题库参考答案详解
- 2026文化和旅游部直属事业单位招聘应届毕业生78人备考题库(二)及答案详解(必刷)
- 2026四川省成都广定发展集团有限公司招聘3人备考题库及答案详解(各地真题)
- 2024年广东省普宁市中考物理模拟试题
- 自然地理学(伍光和版)第五章地貌
- 25道中国邮政集团邮政数据分析师岗位常见面试问题含HR常问问题考察点及参考回答
- 入户申请审批表(正反面,可直接打印)
- 天津市人教版七年级下册期中生物期中试卷及答案
- 工商企业管理专业案例分析报告
- 教师语言与沟通艺术智慧树知到答案章节测试2023年温州大学
- 《小白如何写短视频脚本》
- GB/T 19068.1-2017小型风力发电机组第1部分:技术条件
- GB/T 17359-2012微束分析能谱法定量分析
- 公司付款委托书 模板
评论
0/150
提交评论