数据库技术与应用:chap08-1 连接式访问_第1页
数据库技术与应用:chap08-1 连接式访问_第2页
数据库技术与应用:chap08-1 连接式访问_第3页
数据库技术与应用:chap08-1 连接式访问_第4页
数据库技术与应用:chap08-1 连接式访问_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、11 1 数据库技术与应用数据库技术与应用 第八章第八章 数据库访问技术数据库访问技术(一一) 连接式数据库访问连接式数据库访问 Tongji University 2 8.1 8.1 ADO.NETADO.NET基础基础 8.28.2 创建连接创建连接 8.38.3 命令命令 和数据读取器和数据读取器 返回单值的查询返回单值的查询 执行不返回结果的语句执行不返回结果的语句 返回多个结果的查询返回多个结果的查询 8.4 8.4 数据集和数据适配器数据集和数据适配器 填充填充/ /更新数据集更新数据集 执行存储过程执行存储过程 8.5 8.5 数据绑定数据绑定 第八章第八章 内容提要内容提要 T

2、ongji University 3 对对数据的操作数据的操作 L L( ( C C ( (R R ) SELECT LSELECT L FROM RFROM R WHERE CWHERE C 关系代数 SQL语句 数据库访问命令 Tongji University 4 例例8.1 8.1 已知已知NorthwindNorthwind数据库数据库Order Order DetailsDetails,设计,设计 如下图所示的订单管理程序如下图所示的订单管理程序 引例引例一个一个VB.NET数据库应用程序数据库应用程序 鼠标拖鼠标拖 放自动放自动 产生成产生成 的控件的控件 和组件和组件 自定义的

3、功能自定义的功能 控件控件 绑定导航控件绑定导航控件 Tongji University 5 Order Details(Order Details(OrderID,ProductID,UnitPrice,Quantity,DiscountOrderID,ProductID,UnitPrice,Quantity,Discount) ) Order Details表表 订单编号商品编号商品单价 商品数量商品折扣 Tongji University 6 创建一个创建一个WindowsWindows窗体应用窗体应用 程序,然后进行程序设计,具程序,然后进行程序设计,具 体过程如下:体过程如下: 1.

4、 1. 添加数据源添加数据源 选菜单栏的选菜单栏的“数据数据”| |“添添 加新数据源加新数据源”命令,命令,根据数据根据数据 源配置向导,配置数据源为源配置向导,配置数据源为 Microsoft SQL Server, Microsoft SQL Server, 选择本选择本 地服务器,选择地服务器,选择数据库数据库为为 NorthwindNorthwind,如如右右图所示。图所示。然然 后,后,选选其中其中表表Order DetailsOrder Details。 例例8.1程序设计步骤程序设计步骤 Tongji University 7 数据源添加完毕,在项目开发环境中,数据源添加完毕,

5、在项目开发环境中,出现出现“数数 据源据源”窗口,如窗口,如下下图所示图所示。 例例8.1续续(1) 数据集数据集 数据表数据表 数据列数据列 Tongji University 8 2.2. 程序程序界面界面设计设计 (1) (1) 数据源中控件拖放数据源中控件拖放 从从“数据源数据源”窗口依次将窗口依次将OrderIDOrderID、ProductIDProductID、QuantityQuantity 列直接拖放到列直接拖放到Form1Form1窗体窗体上。上。 (2(2) ) 用户用户自定义控件自定义控件 例例8.1续续(2) 例例8.18.1 中中控件控件与属性设置与属性设置 控件类

6、别控件类别控件控件namename属性设置项目属性设置项目属性值属性值 Labellabel1Text 记录号 label2Text商品总价 label3Text Buttonbutton1Text显示记录 TextBoxtextBox1Text Tongji University 9 3.3.自定义功能控件编程自定义功能控件编程 button1button1单击事件程单击事件程序序 例例8.1续续(3) Private Sub Button1_Click() Handles Button1.Click Dim i As Integer i = CInt(TextBox1.Text) - 1

7、指定行号减1,因为数组下标从0开始 BindingNavigatorPositionItem.TextBindingNavigatorPositionItem.Text = TextBox1.Text = TextBox1.Text 指定导航控件的索引值 第i行,第1列数据 OrderIDTextBox.TextOrderIDTextBox.Text = = NorthwindDataSet.TablesNorthwindDataSet.Tables(0).Rows(0).Rows(i i)(0).)(0).ToStringToString() () 第i行,第2列数据 ProductIDTe

8、xtBox.TextProductIDTextBox.Text = = NorthwindDataSet.TablesNorthwindDataSet.Tables(0).Rows(0).Rows(i i)(1).)(1).ToStringToString() () 第i行,第4列数据 QuantityTextBox.TextQuantityTextBox.Text = = NorthwindDataSet.TablesNorthwindDataSet.Tables(0).Rows(0).Rows(i i)(3).)(3).ToStringToString() () Dim totalPric

9、e, unitPrice, discount As Double unitPriceunitPrice = = NorthwindDataSet.TablesNorthwindDataSet.Tables(0).Rows(0).Rows(i i)(2)(2) discount = discount = NorthwindDataSet.TablesNorthwindDataSet.Tables(0).Rows(0).Rows(i i)(4)(4) totalPricetotalPrice = ( = (QuantityTextBox.TextQuantityTextBox.Text) ) *

10、* unitPriceunitPrice * * (1 - discount) (1 - discount) Label3.Text = CStr(totalPrice) End Sub Tongji University 10 (1) (1) 数据访问对象数据访问对象 数据源中控件拖放,系统自动对数据源中控件拖放,系统自动对数据连接对象数据连接对象、数据集数据集 对象对象、数据适配器数据适配器对象编程。对象编程。 例例8.1 说明说明(1) Tongji University 11 (2)(2)数据库应用系统的体系结构数据库应用系统的体系结构 可分为可分为前台应用程序前台应用程序、中间数据访

11、问层中间数据访问层和和后台数据库后台数据库三个三个 层次。在层次。在.NET.NET平台上,数据库应用系统的三层结构如平台上,数据库应用系统的三层结构如下下图图。 例例8.1 说明说明(2) SQL Server等 数据库 ADO.NET 数据访问模型 后台数据库中间数据访问模型前台应用程序 Tongji University 12 ADO.NETADO.NET是是. .NETNET平台上的一种数据访问技术。平台上的一种数据访问技术。 适用于连接环境以及断开的环境。 由两大组件构成:数据提供程序、数据集; 8.1 ADO.NET简介简介 Tongji University 13 1. 1.核心

12、功能有核心功能有2 2个:个: 通过与数据源的活动连接来访问数据 与断开连接的数据集和数据表进行数据交换 2 2. .核心核心类有类有4 4个个: Connection、Command、DataReader和DataAdapter类 3.ADO.NET3.ADO.NET有有5 5种种不同的数据提供不同的数据提供程序程序: SQL Server数据提供程序 Oracle数据提供程序 OLE DB数据提供程序 ODBC数据提供程序 EntityClient提供程序 ADO.NET数据提供程序数据提供程序 Tongji University 14 名称空间名称空间说明说明 System.Data定义

13、和部分实现ADO.NET体系结构的类、接 口、委托和枚举 System.Data.OdbcODBC的.NET Framework数据提供程序。 System.Data.OleDbOLE DB的.NET Framework数据提供程序。 System.Data.SqlClientSQL Server的.NET Framework数据提供程序。 System.Data.OracleClientOracle的.NET Framework数据提供程序。 4 4种数据提供程对应的名称空间种数据提供程对应的名称空间 ADO.NET数据数据提供程序名称空间提供程序名称空间 本课程选用本课程选用SQLSQL

14、ServerServer的的.NET.NET数据提供程序数据提供程序。它位于。它位于 System.Data.SqlClientSystem.Data.SqlClient名称空间。名称空间。 Tongji University 15 ADO.NETADO.NET编程艺术是构建在概念的基础之上的。因编程艺术是构建在概念的基础之上的。因 此,应把注意力集中在概念上,学习何时以及如何此,应把注意力集中在概念上,学习何时以及如何 使用合适的对象和方法,把想法编程现实。使用合适的对象和方法,把想法编程现实。 SQL ServerSQL Server数据提供程序的数据提供程序的4 4个核心类个核心类 Sq

15、lConnection 建立与建立与SQL Server数据库的连接数据库的连接 SqlCommand执行执行SQL语句或者存储过程语句或者存储过程 SqlDataReader为结果集提供仅向前且只读数据流为结果集提供仅向前且只读数据流 SqlDataAdapter DataSet和数据源之间的桥接器和数据源之间的桥接器 Tongji University 16 1. Dataset1. Dataset是是具有关系数据结构的类具有关系数据结构的类。 能在本地内存中缓存数据源中的数据,与数据适配器 (DataAdapter)配合使用支持断开式数据访问。 2. Dataset2. Dataset包

16、含包含2 2个个类型的集合类型的集合: DataTableCollection和联系集合DataRelationCollection。 3. DataSet3. DataSet和和DataAdapterDataAdapter对象配合使用对象配合使用方法:方法: 使用DataAdapter将数据源中的数据填充到DataSet对象中, 在断开连接的情况下做本地处理;待处理结束后,再通过 DataAdapter用DataSet对象更新数据源中的数据。 数据集数据集(DataSet) Tongji University 17 支持支持两种两种数据库访问数据库访问方式方式: 连接式连接式 通过Comma

17、nd直接访问数据库,进行查询(与 DataReader配合)或更新。 断开式断开式 通过DataAdapter和DataSet对象进行数据库的查 询或更新操作。 ADO.NET数据库访问方式数据库访问方式 数据库 Connection对象 Command对象DataAdapter对象 DataReader对象 DataSet对象 应用程序 连接式连接式断开式断开式 Tongji University 18 1818 8.2 创建连接创建连接 例例8.28.2 在在VB.NETVB.NET程序中,建立与本地程序中,建立与本地SQL SERVER 2008 SQL SERVER 2008 Expr

18、essExpress服务器中服务器中 数据库数据库NorthwindNorthwind的连接的连接,并并测试测试连接。连接。 关键代码:关键代码: Imports System.Data.SqlClient 导入名称空间,该语句添加到文件Form1.vb的头部 Dim Dim conStrconStr As As StringString = = Server=.Server=.sqlexpresssqlexpress; _ ; _ Integrated Security=true; ; Integrated Security=true; 连接字符串 DimDim conn As New co

19、nn As New SqlConnectionSqlConnection( (conStrconStr) ) 创建连接 Try conn.Openconn.Open() () 打开连接 MessageBox.Show(数据库连接测试成功!, 成功) Catch ex As Exception MessageBox.Show(ex.ToString(), 失败) Finally conn.Closeconn.Close() () 关闭连接 End Try SqlConnection类 Tongji University 19 SqlConnectionSqlConnection对象对象负责负责建

20、立或终止建立或终止与与SqlSql Server Server数据源数据源的的连接连接 创建创建: 属性属性:连接连接字符串字符串( (属性名:属性名:C ConnectionStringonnectionString) ) 方法:方法: SqlConnection类类 DimDim 对象对象名名AS new AS new SqlConnectionSqlConnection( (连接字符串连接字符串); ); u 若采用若采用Windows身份验证方式身份验证方式 “Integrated Security=true; Database=数据库名数据库名; Server=服务器名服务器名” v

21、 若采用混合身份验证方式若采用混合身份验证方式 “uid=用户名用户名; pwd=口令口令; Database=数据库名数据库名; Server=服务器名服务器名” u Open方法:方法:打开指定的连接,建立与数据库打开指定的连接,建立与数据库服务器服务器的会话的会话。 对象名对象名.Open() v Close方法:方法:关闭指定的连接,终止与数据库服务器关闭指定的连接,终止与数据库服务器的的会话。会话。 对象名对象名.Close() Tongji University 20 2020 连接字符串参数连接字符串参数 SQL Server数据提供程序的连接字符串参数数据提供程序的连接字符串参

22、数 名称名称常用常用别名别名默认值默认值允许值允许值说明说明 Data Source Server无服务器名目标SQL Server实例的名称 Initial Catalog Database无服务器上的 任何数据库 数据库名 Integrated Security trusted_Con nection falsetrue,false yes,no,sspi 指定身份验证的模式。 当取值为true(yes, sspi)时, 为Windows 身份验证模式; 当取值为false (no)时, 为混合验证模式,必须在连 接中指定用户ID和密码。 PasswordPWD无任意字符串不使用Windo

23、ws身份验证时 的口令 User IDUID无无不使用Windows身份验证时 的用户名 Tongji University 21 2121 创建创建连接连接对象对象 Dim connStr AS String= Integrated Security=true; _ Server=.SqlExpress Dim conn AS New SqlConnection(connStr) Dim ConStr As String = Integrated Security=true; _ Server=.SqlExpress Dim conn As New SqlConnection() conn.

24、ConnectionString = ConStr 方法一:方法一: 方法二方法二 : Tongji University 22 问题:问题: 查询查询NorthwindNorthwind数据库数据库Order DetailsOrder Details表中订单表中订单 编号为编号为1025010250的商品总价。的商品总价。 8.3 SqlCommand命令命令 待执行的待执行的SQLSQL语句语句 , SELECT sum(UnitPrice*(1-Discount)*Quantity) FROM Order Details WHERE OrderID=10250 在在VB.NET VB.N

25、ET 应用程序应用程序中中如何构建如何构建访问访问数据库的命令?数据库的命令? 创建封装了待执行创建封装了待执行SQLSQL语句的语句的SqlCommandSqlCommand对对 象象、并并执行执行之之。 Tongji University 23 命令对象命令对象“封装封装了待执行的了待执行的SQLSQL语句,提供了语句,提供了执行方法执行方法”。 其其创建语法创建语法格式:格式: Dim 对象对象名名 AS new SqlCommand(命令命令文本文本, 连接连接) SqlCommand类类 SqlCommand类的属性类的属性 CommandTexts 定义命令的可执行文本,包括 SQ

26、L 语句、存 储过程等。 CommandType 当该属性取值为 Text 时,CommandText 属性 值为SQL 语句; 当取值 StoredProcedure 时,CommandText 值为存储过程。 Connection 用于设置或返回数据库的连接对象。把命令与 数据库的连接关联起来。 Parameters用于传递给命令对象的参数。 Tongji University 24 Dim cmd As SqlCommand=New SqlCommand( ) 创建了一个空命令创建了一个空命令 它未与连接关联,也没有设置文本(即它未与连接关联,也没有设置文本(即SQL),因此无法完成任何

27、工作。),因此无法完成任何工作。 cmd.Connection= conn 设置命令对象的设置命令对象的Connection属性属性 cmd.CommandText= sql 设置命令对象的设置命令对象的CommandText属性属性 创建创建SqlCommand对象时,需指定其命令文本对象时,需指定其命令文本 (一个一个 嵌入式嵌入式SQL语句语句)和将使用的连接和将使用的连接(一个一个Connection对象对象)。 创建命令对象创建命令对象 Dim sql As String = SELECT sum(UnitPrice*(1-Discount)*Quantity) sql += FRO

28、M Order Details WHERE OrderID=10250 Dim conn As New SqlConnection(Database= Northwind; _ Integrated Security=SSPI;) Dim cmd As SqlCommand=New SqlCommand(sql,conn) 创建命令对象创建命令对象,同时同时设置其设置其Connection和和CommandText属性。属性。 Tongji University 25 执行命令的方法执行命令的方法 执行执行命令的方法命令的方法 命令返回的结果类型命令返回的结果类型对应的方法对应的方法返回结果数

29、据返回结果数据 类型类型 不返回结果(非查询)不返回结果(非查询) ExecuteNonQuery Integer 单个值单个值 (查询)(查询)ExecuteScalar Object 0行或多行或多行行 (查询)查询)ExecuteReaderSqlDataReader Tongji University 26 例例8.38.3 查询查询NorthwindNorthwind数据库数据库“Order DetailsOrder Details”表中指定表中指定 订单编号的商品总价。订单编号的商品总价。 返回单值的查询返回单值的查询 TextBox1 TextBox2 Button1 Tongj

30、i University 27 Private Sub Button1_Click() Handles Button1.Click Dim connString As String = Server=.sqlexpress; _ Integrated Security=true; Dim orderNo As String = TextBox1.Text Dim sql As String = SELECT sum(UnitPrice*(1-Discount)*Quantity) sql += FROM Order Details WHERE OrderID= + orderNo + Dim

31、conn As New SqlConnection(connString) 创建连接 Dim cmd As SqlCommand = New SqlCommand(sql, conn) conn.Open() 打开连接 Dim totalPrice As Object totalPrice = cmd.ExecuteScalar() TextBox2.Text = Format(totalPrice, Style:=00.000) conn.Close() 关闭连接 End Sub SqlCommand 的的 ExecuteScalar方法方法 关键代码关键代码 IF IsDBNull(tot

32、alPrice) Then TextBox2.Text = 该订单编号不存在 Else ENDIF Tongji University 28 2828 基于基于SqlCommand对象的对象的数据库访问步骤数据库访问步骤 数据库访问的基本过程如下:数据库访问的基本过程如下: (1) (1) 创建连接创建连接 (2) (2) 设置设置SqlCommandSqlCommand对象的文本对象的文本 (3) (3) 创建命令创建命令 (4) (4) 执行命令执行命令 Tongji University 29 例例8.4 8.4 向向northwindnorthwind数据库数据库categoriesc

33、ategories表中插入表中插入数据,并显示数据,并显示 categoriescategories表中当前结果。具体:表中当前结果。具体: 1) 1)单击单击插入插入按钮,将根据按钮,将根据Form1Form1上后两个文本框中的输入值,上后两个文本框中的输入值, 向向categoriescategories表中插入数据;表中插入数据; 2)2)单击单击显示显示按钮,将在弹出的窗体按钮,将在弹出的窗体Form2Form2上显示表中现有上显示表中现有 记录。记录。 不返回结果的命令不返回结果的命令 TextBox1 TextBox2 TextBox3 insertBtn displayBtn e

34、xitBtn Tongji University 30 Categories(CategoryID,CategoryName,Description,Picture) Categories表表 产品类别图片产品类别描述产品类别名称产品类别编号 Tongji University 31 Insert操作的关键代码操作的关键代码 Private Sub insertBtn_Click() Handles insertBtn.Click Dim connStr As String = Server=.sqlexpress; _ integrated security=true“ DimDim sql

35、inssqlins As StringAs String = = insert into categories(insert into categories(categoryName,descriptioncategoryName,description) ) valuesvalues( ( _ _ integrated security=true Dim conn As New SqlConnection(connStr) DimDim sqlinssqlins As StringAs String = = insert into _ insert into _ ; Database=Dat

36、abase=northwindnorthwind; ; integrated security=trueintegrated security=true Dim Dim conn conn As New As New SqlConnectionSqlConnection( (connStrconnStr) ) DimDim qryqry AsAs StringString = = select select employeeid,firstname,lastname,title,addressemployeeid,firstname,lastname,title,address from fr

37、om employees where employees where firstnamefirstname like like + TextBox1.Text + + TextBox1.Text + % qryqry += += and and lastnamelastname like like + TextBox2.Text + + TextBox2.Text + % DimDim cmdcmd AsAs NewNew SqlCommandSqlCommand( (qryqry, conn), conn) conn.Openconn.Open() () l DimDim rdrrdr AsAs SqlDataReaderSqlDataReader = = cmd.ExecuteReadercmd.ExecuteReader() () WhileWhile rdr.Readrdr.Read() () DimDim li li AsAs NewNew ListViewItemListViewItem() () li.SubItems.Clearli.SubItems.Clear() () li.SubItemsli.SubItems(0).Text = (0).T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论