数据库应用开发-客户端开发技术及工具.ppt_第1页
数据库应用开发-客户端开发技术及工具.ppt_第2页
数据库应用开发-客户端开发技术及工具.ppt_第3页
数据库应用开发-客户端开发技术及工具.ppt_第4页
数据库应用开发-客户端开发技术及工具.ppt_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

数据库应用开发 客户端开发技术及工具 第一节ODBC应用与开发 学习目标 什么是ODBC ODBC的体系结构 ODBC的应用特色 ODBC操纵 一 什么是ODBC 1 ODBC的概念 ODBC OpenDatabaseConnectivity 开放数据库互连 是微软公司开放服务结构 WOSA WindowsOpenServicesArchitecture 中有关数据库的一个组成部分 它建立了一组规范 并提供了一组对数据库访问的标准API ApplicationProgrammingInterface 应用程序编程接口 这些API利用SQL来完成其大部分任务 ODBC本身也提供了对SQL语言的支持 用户可以直接将SQL语句送给ODBC 一 什么是ODBC 2 ODBC技术背景 史前API 后来CLI Call LevelInterface 再后来ODBC 再后来OLE 新世纪终于到来ADO NET 再后来ADO 二 ODBC的体系结构 1 ODBC的组成结构 二 ODBC的体系结构 2 各层的功能 三 应用ODBC的优势 1 应用ODBC保证了数据库的独立性 2 应用ODBC保证了数据库之间的互操作能力 四 ODBC操纵 重点 如何创建ODBC数据源 第二节ADO应用与开发 学习目标 什么是ADO ADO对象及其应用 ADO对象模型及其应用特征 一 ADO概述 1 什么是ADO ADO 即ActiveXDataObjects 是一种应用广泛的数据库访问技术 它基于OLEDB技术 是对OLEDB面向对象的封装 OLEDB与ODBC相比 在底层的数据库引擎和每一个独立的数据库引擎之间的接口存在着较大的不同 在ODBC中 每一种类型的数据库都必须有相应的驱动器 动态链接库 DLL ODBC引擎使用该DLL打开相应类型的数据库并进行记录的读写修改等操作 OLEDB同样需要驱动器 但不同的是 OLEDB的驱动器是通过ActiveX实现的 一个ActiveX就定义了用来实现特定接口的类 这种方式减少了程序和数据库引擎之间的层次 因而提高了数据库编程的速度 ADO实际上就是一个ActiveX对象集 封装了多种对象方法属性 1 1ADO OLEDB以及ODBC的关系 1 2ADO基本操作 ADO提供了以下的操作 连接到数据源 指定访问数据源的命令 执行命令 如果这个命令使数据按表中的行的方式返回 则将这些行存储在易于检查 操作或更改的缓存 CASHE 中 适当情况下 可使用缓存行中的更改内容来更新数据源 提供常规的方法检测错误 二 ADO对象模型及其应用特征 2 2ADO对象的功能说明 其中 Connection Command Recordset和Fields对象还有Properties集合 Connection对象代表打开的 与数据源的连接 Command对象定义了将对数据源执行的指定命令 Recordset对象表示的是来自基本表或命令执行结果的记录全集 Errors对象包含与单个操作 涉及提供者 有关的数据访问错误的详细信息 Fields对象代表使用普通数据类型的数据的列的集合 Parameter对象代表与基于参数化查询或存储过程的Command对象相关联的参数或自变量 Property对象代表由提供者定义的ADO对象的动态特征 2 3ADO的优点 使用方便灵活 使用简单 面向对象的体系结构 对象的共享机制 三 Connection对象 1 Connection对象的作用Connection对象是数据库与外界沟通的唯一桥梁 所有对数据库的操作都必须依赖于Connection对象 一个Connection对象代表了一个程序到数据库的连接 3 2Connection对象的属性 3 3Connection对象的方法 3 4Connection对象应用示例 ASP 定义及实例化DIMMyConnSETMyConn Server CreateObject ADODB CONNECTION 打开连接DIMConnStrConnStr DSN mydsn uid userid pwd userpwd MyConn ConnectionString ConnStrIFMyConn State AdStateClosedTHENMyConn OpenENDIF或MyConn OpenConnStr关闭连接IFMyConn State AdStateOpenTHENMyConn CloseENDIF释放连接SETMyConn nothing 3 5使用Connection对象返回记录集 DIMMyRSSETMyRS Server CreateObject ADODB RECORDSET DIMSelectSQLStrSelectSQLStr select MyRS MyConn ExecuteSelectSQLStr或MyRS OpenSelectSQLStr MyConn 3 6使用Connection对象进行数据更新 DIMSQLStrSQLStr update 或SQLStr insertinto 或SQLStr deletefrom MyConn BeginTransMyConn ExecuteSQLStrIFerr number0THENMyConn RollbackTransELSEMyConn CommitTransENDIF 第三节ADO NET应用开发 ADO NET的名称起源于ADO ActiveXDataObjects 这是一个广泛的类组 用于在以往的Microsoft技术中访问数据 之所以使用ADO NET名称 是因为Microsoft希望表明 这是在 NET编程环境中优先使用的数据访问接口 它提供了平台互用性和可伸缩的数据访问 ADO NET增强了对非连接编程模式的支持 并支持RICHXML 由于传送的数据都是XML格式的 因此任何能够读取XML格式的应用程序都可以进行数据处理 事实上 接受数据的组件不一定要是ADO NET组件 它可以是基于一个MicrosoftVisualStudio的解决方案 也可以是任何运行在其它平台上的任何应用程序 一 ADO NET简介 ADO NET是一组用于和数据源进行交互的面向对象类库 通常情况下 数据源是数据库 但它同样也能够是文本文件 Excel表格或者XML文件 ADO NET允许和不同类型的数据源以及数据库进行交互 然而并没有与此相关的一系列类来完成这样的工作 因为不同的数据源采用不同的协议 所以对于不同的数据源必须采用相应的协议 一些老式的数据源使用ODBC协议 许多新的数据源使用OleDb协议 并且现在还不断出现更多的数据源 这些数据源都可以通过 NET的ADO NET类库来进行连接 ADO NET简介 ADO NET是一种基于标准的程序设计模型 可以用来创建分布式应用以实现数据共享 在ADO NET中 DataSet占据重要地位 它是数据库里部分数据在内存中的拷贝 与ADO中的RecordSet不同 DataSet可以包括任意个数据表 每个数据表都可以用于表示自某个数据库表或视图的数据 DataSet驻留在内存中 且不与原数据库相连 即无需与原数据库保持连接 完成工作的底层技术是XML 它是DataSet所采用的存储和传输格式 在运行期间 组件 如某个业务逻辑对象或web表单 之间需要交换DataSet中的数据 数据以XML文件的形式从一个组件传输给另一个组件 由接收组件将文件还原为DataSet形式 DataSet的有关方法与关系数据模型完全一样 二 ADO NET包含的对象 2 1ADO NET包含的对象 SqlConnection对象和数据库交互 你必须连接它 连接帮助指明数据库服务器 数据库名字 用户名 密码 和连接数据库所需要的其它参数 connection对象会被command对象使用 这样就能够知道是在哪个数据库上面执行命令 SqlCommand对象与数据库交互的过程意味着你必须指明想要发生的操作 这是依靠command对象执行的 你使用command对象来发送SQL语句给数据库 command对象使用connection对象来指出与哪个数据库进行连接 你能够单独使用command对象来直接执行命令 或者将一个command对象的引用传递给SqlDataAdapter 它保存了一组能够操作下面描述的一组数据的命令 2 2ADO NET包含的对象 SqlDataReader对象许多数据操作要求你只是读取一串数据 datareader对象允许你获得从command对象的SELECT语句得到的结果 考虑性能的因素 从datareader返回的数据都是快速的且只是 向前 的数据流 这意味着你只能按照一定的顺序从数据流中取出数据 这对于速度来说是有好处的 但是如果你需要操作数据 更好的办法是使用DataSet 2 3ADO NET包含的对象 DataSet对象DataSet对象是数据在内存中的表示形式 它包括多个DataTable对象 而DataTable包含列和行 就象一个普通的数据库中的表 你甚至能够定义表之间的关系来创建主从关系 parent childrelationships DataSet是在特定的场景下使用 帮助管理内存中的数据并支持对数据的断开操作的 DataSet是被所有DataProviders使用的对象 因此它并不像DataProvider一样需要特别的前缀 2 4ADO NET包含的对象 SqlDataAdapter对象某些时候你使用的数据主要是只读的 并且你很少需要将其改变至底层的数据源 同样一些情况要求在内存中缓存数据 以此来减少并不改变的数据被数据库调用的次数 Dataadapter通过断开模型来帮助你方便的完成对以上情况的处理 当在一单批次的对数据库的读写操作的持续的改变返回至数据库的时候 Dataadapter填充 fill DataSet对象 dataadapter包含对连接对象以及当对数据库进行读取或者写入的时候自动的打开或者关闭连接的引用 另外 dataadapter包含对数据的SELECT INSERT UPDATE和DELETE操作的command对象引用 你将为DataSet中的每一个table都定义dataadapter 它将为你照顾所有与数据库的连接 所有你将做的工作是告诉dataadapter什么时候装载或者写入到数据库 NET数据提供程序 NET框架提供了四种数据提供程序 NETDataProvider 它们分别是 1 SQLServer NETFrameworkDataProvider命名空间 System Data SqlClient 2 OLEDB NETFrameworkDataProvider命名空间 System Data OleDb 3 ODBC NETFrameworkDataProvider命名空间 System Data ODbc 4 ORACLE NETFrameworkDataProvider命名空间 System Data OracleClient 每种DataProvider都包含四种对象 Connection对象 提供与数据源的连接Command对象 使用户能够访问用于返回数据 修改数据 运行存储过程等的数据库命令DataReader对象 从数据源中提供高性能的数据流DataAdapter对象 提供连接DataSet和数据源的桥梁 DataAdapter使用Command对象在数据源中执行SQL命令 以便将数据加载到DataSet中 并使对DataSet数据的更改与数据源保持一致 三 ADO NET的体系结构 换个角度看ADO NET体系结构 四 ADO NET中数据库连接 System Data SqlClient SqlConnection常用的一些连接字符串 C 代码 SqlConnectionconn newSqlConnection Server local IntegratedSecurity SSPI database Pubs SqlConnectionconn newSqlConnection server local NetSDK database pubs IntegratedSecurity SSPI SqlConnectionconn newSqlConnection DataSource localhost IntegratedSecurity SSPI InitialCatalog Northwind SqlConnectionconn newSqlConnection datasource local initialcatalog xr integratedsecurity SSPI persistsecurityinfo False workstationid XURUI packetsize 4096 SqlConnectionmyConn newSqlConnection PersistSecurityInfo False IntegratedSecurity SSPI database northwind server mySQLServer SqlConnectionconn newSqlConnection uid sa pwd passwords initialcatalog pubs datasource 127 0 0 1 ConnectTimeout 900 ADO NET中数据库连接 System Data OleDb OleDbConnection常用的一些连接字符串 C 代码 OleDbConnectionconn newOleDbConnection Provider Microsoft Jet OLEDB 4 0 DataSource D MyWeb 81 05 GrocerToGo mdb OleDbConnectionconn newOleDbConnection Provider Microsoft Jet OLEDB 4 0 Password UserID Admin DataSource grocertogo mdb OleDbConnectionconn newOleDbConnection Provider MSDAORA DataSource ORACLE8i7 PersistSecurityInfo False IntegratedSecurity yes OleDbConnectionconn newOleDbConnection Provider Microsoft Jet OLEDB 4 0 DataSource c bin LocalAccess40 mdb OleDbConnectionconn newOleDbConnection Provider SQLOLEDB DataSource MySQLServer IntegratedSecurity SSPI ADO NET中数据库连接 System Data OracleClient OracleConnection常用的一些连接字符串 C 代码 OracleConnectionmyConn newSystem Data OracleClient OracleConnection DataSource Oracle8i IntegratedSecurity yes 其他厂商提供的数据库连接 DB2ConnectionmyConn newIBM Data DB2 DB2Connection DATABASE SAMPLE UID PWD DB2ConnectionmyConn newIBM Data DB2 DB2Connection DATABASE SAMPLE ADO NET中数据库连接 System Data Odbc OdbcConnection常用的一些连接字符串 C 代码 OdbcConnectionconn newOdbcConnection Driver SQLServer Server MyServer Trusted Connection yes Database Northwind OdbcConnectionconn newOdbcConnection Driver MicrosoftODBCforOracle Server ORACLE8i7 PersistSecurityInfo False Trusted Connection yes OdbcConnectionconn newOdbcConnection Driver MicrosoftAccessDriver mdb DBQ c bin nwind mdb OdbcConnectionconn newOdbcConnection Driver MicrosoftExcelDriver xls DBQ c bin book1 xls OdbcConnectionconn newOdbcConnection Driver MicrosoftTextDriver txt csv DBQ c bin OdbcConnectionconn newOdbcConnection DSN dsnname 4 2ADO NET数据库开发应用一般模式 申明并使用连接字符串实例化Connection对象打开连接申明并使用SQL指令实例化Command对象若SQL指令为无返回结果集的指令 则直接执行Command对象的ExecuteNonQuery方法 该方法返回影响的数据行数 然后跳至8若SQL指令有结果集 则申明并使用Command对象申明一个DataAdapter对象申明一个DataSet对象myDS使用DataAdapter对象填充myDS关闭连接 4 2 1ADO NET无返回结果集 C SqlConnectionconn newSqlConnection connStr SqlCommandcmd newSqlCommand SQLStr cmd Connection conn try if conn State ConnectionState Closed conn Open returncmd ExecuteNonQuery 4 2 1ADO NET无返回结果集 C Catch Exceptionexp Finally if conn State ConnectionState Open conn Close 4 2 2ADO NET有返回结果集 C SqlConnectionconn newSqlConnection connStr SqlCommandcmd newSqlCommand SQLStr cmd Connection conn try if conn State ConnectionState Closed conn Open SqlDataAdapterdap newSqlDataAdapter cmd 4 2 2ADO NET有返回结果集 C DataSetmyDS newDataSet dap Fill myDS strTableName Catch Exceptionexp Finally if conn State ConnectionState Open conn Close 4 3ADO NET连接的管理 可以使用Open和Close显示地打开和关闭连接 如果使用DataAdapter 就不必显示地打开和关闭连接 调用DataAdapter的相关方法 如Fill时 会自动检查连接是否已经打开 如未打开 它将打开连接 执行其逻辑 然后关闭连接 当关闭连接时 从数据源出入的数据流将被关闭 但是连接对象使用的非托管资源并没有释放 若连接池是启用的 则将连接释放到池中 调用Dispose方法可以从连接池中删除连接 4 4连接池 建立和关闭数据库连接是相当消耗资源的过程 如果一个程序可能同时要建立多个连接 使用连接池能提高它的性能 连接池是SQLServer或OLEDB数据源的功能 它可以使特定的用户重复使用连接 4 4连接池 五 DataAdapter对象 DataSet对象表示来自数据源的数据副本 在没有数据源时 DataSet对象对保存窗体可使用的本地数据是很有用的 然而 dataSet对象作为实际的数据管理工具 必须能够与一个或者多个数据源进行交互 为了实现这种交互 微软 NET框架提供了DataAdapter类 DataAdapter对象用做DataSet对象和数据源之间的连接桥梁 能够用来检索和保存数据 DataAdapter类表示的是一组数据库命令和一个数据库连接 它们用来填充DataSet对象和更新数据源 每个DataAdapter对象都在单个DataTable对象和单个结果集之间交换数据 5 1DataAdapter对象的类型 NET提供两个用于数据库的DataAdapter类 OleDataAdapter类 该类适用于由OLEDB数据提供程序公开的任何数据源 SqlDataAdapter类 主要用于SQLServer7 0或后续版本的数据库 SqlDataAdapter对象比OleDataAdapter对象速度要快 这是因为它直接在SQLServer上运行 而不必通过OLEDB提供程序层 5 2SqlDataAdapter构造方法 SqlDataAdapter SqlDataAdapter SqlCommandmySqlCommand SqlDataAdapter stringselectCommandString SqlConnectionmySqlConnection SqlDataAdapter stringselectCommandString stringconnectionString 本方法性能不好 5 3SqlDataAdapter属性和方法 六 Command对象 Command对象可使用数据命令与数据源 通常是数据库 通信 Command在某些情况下特别适用 例如一项计算或某个聚合函数的结果 以及创建和修改数据库结构 Command的创建方法有三种 使用new关键字创建 然后设置相关属性 使用查询字符串和Connection对象的参数的构造函数 调用Connection对象的CreateCommand方法 6 1Command对象的属性 Connection 对Connection对象的引用CommandType 可为Text StoredProcedure和TableDirect中的一种CommandText 命令语句或存储过程名称Parameters 命令需要的参数 6 2Command对象的参数管理 可使用Add方法为Command对象添加相关参数 6 3Command对象方法 ExecuteNonQuery方法 无返回集 多用于进行数据更新 执行Insert Update Delete Create Alter等操作ExecuteScalar方法 返回单一值 多用于集函数查询ExecuteReader方法 返回类型为SqlDataReader 6 4Command对象应用示例 一 stringstrConn strSQL strConn server localhost initialcatalog ST userid sa pwd 123456 SqlConnectionconn newSqlConnection strConn conn Open strSQL select fromstudentwheresn SqlCommandcmd newSqlCommand strSQL conn cmd Parameters Add SID SqlDbType VarChar 10 cmd Parameters 0 Value 2007130101 SqlDataReaderrdr cmd ExecuteReader conn Close 6 4Command对象应用示例 二 stringstrConn strSQL strConn server localhost initialcatalog ST userid sa pwd 123456 SqlConnectionconn newSqlConnection strConn conn Open strSQL selectsnamefromstudentwheresnamelike SqlCommandcmd newSqlCommand strSQL conn cmd Parameters Add SNAME 张 SqlDataReaderrdr cmd ExecuteReader while rdr Read Console WriteLine rdr 0 rdr Close conn Close 6 4Command对象应用示例 三 SqlParameterSID newSqlParameter SID SqlDbType VarChar 10 SID Value 2007130101 SID Direction ParameterDirection Input cmd Parameters Add SID 6 4Command对象应用示例 四 stringcreateTableStr createtable SqlCommandcmd newSqlCommand cmd ExecuteNonQuery 6 4Command对象应用示例 五 SqlCommandordersCMD newSqlCommand selectcount fromorders conn Int32count Int32 ordersCMD ExecuteScalar 七 DataSet对象 DataSet是ADO NET的中心概念 可以把DataSet想像成内存中的数据库 正是由于DataSet 才使得程序员在编程时可以屏蔽数据库之间的差异 从而获得一致的编程模型 DataSet支持多表 表间关系 数据约束等 7 1DataSet对象集合概述 DataSet中主要包含以下几个重要对象 TableCollection对象 DataSet里的表是用DataTable来表示的 DataSet可以包含许多DataTable 这些DataTable构成TableCollection对象 DataTable是内存中的一张表 它包含一个ColumnsCollection对象和一个RowsCollection对象 分别表示表的列集和行集 DataTable保存有数据的状态 通过存取DataTable的当前状态 可以知道数据是否被更新或者删除 RelationsCollection对象 各个DataTable之间的关系通过DataRelation来表达 这些DataRelation形成一个集合 称为RelationsCollection 它是DataSet的子对象 DataRelation表达了数据表之间的主 外键关系 通过它可以轻松实现数据参照完整性 ExtendedProperties对象 在这个对象里可以定义特定的信息 比如密码 更新时间等 7 2DataTable对象 创建一个DataTableDataTableMyTable newDataTable Test MyTable CaseSensitive False 不区分大小写MyTable Minimumcapacity 100 预留100个记录空间创建表列MyTable Columns Add SID typeof string 由于通常在定义表列时 是使用 NET架构中的数据类型 而非数据库的数据类型 所以需要使用typeof方法把 NET架构的数据类型转换成数据库中的数据类型创建表达式列在ADO NET中允许创建一些依赖于其他表达式的表列 这样可较好地表现表列间的自然联系 要创建表达式列 需要用到列对象的Expression属性 DataColumntax newDataColumn tax DataType typeof Currency tax Expression total rate 0 20 MyTable Columns Add tax 或MyTable Columns Add tax typeof Currency total rate 0 20 7 3DataView对象 为了显示保存在dataSet对象中的数据 可以使用DataView对象来显示DataSet对象中的数据 DataView对象是单一DataTable对象的可绑定的 定制的显示 DataView对象可被定制成表示DataTable对象中数据的子集 这样的定制使得多个控件能绑定到同一个DataTable对象中 而每个控件显示不同版本的数据 DataSet对象中的每个DataTable对象都有DefaultView属性 该属性返回表的默认视图 如下 DataViewdv MyDS Tables Authors DefaultView 7 3 1DataView对象示例 DataViewdv newDataView MyDS Tables Authors dv RowFilter state CA dv Sort au lname 7 4DataRow对象 在创建并定义Datatable的结构后 可以使用DataRow对象向表中添加新的数据行 若要向DataTable添加一个新行 首先要声明一个DataRow类型的变量 当调用DataTable的NewRow方法时会返回一个新的DataRow对象 此对象根据DataTable的DataColumnCollection来定义其结构 以下是定义DataRow并添加到DataTable的例子 DataRowdrNewAuthor dtAuthors NewRow drNewAuthor 0 11 drNewAuthor 1 Smith dtAuthors Rows Add drNewAuthor 7 4 1DataRow的编辑时状态管理 DataRow类为了在编辑数据时挂起和恢复数据行的状态提供了3个方法 BeginEdit EndEdit CancelEdit 当编辑数据时 调用BeginEdit可以挂起任何事件 或异常 使用Items集合指定要修改的数据的列名和新值 使用EndEdit重新恢复任何事件 或异常 使用CancelEdit可以回滚任何更改和重新激活任何事件 或异常 7 4 2删除DataRow对象 可以使用两种方法来从DataTable对象中删除DataRow对象 DataRowCollection对象的Remove方法和DataRow对象的Delete方法 Remove方法是从DataRowCollection中删除DataRow 而Delete方法只对删除的行做标记 Remove方法 DataRowdrStudent dtSyudents Rows 3 dtStudents Rows Remove drStudent 这是真实的删除Delete方法 drStudent Delete 只是使该行的RowState属性值更改为Deleted 7 4 3DataRow对象的RowState属性 DataRow类具有RowState属性 它用来表示从第一次创建DataTable开始 行是否发生更改 如何更改以及通过哪种方式进行更改 对DataRow中的列值的编辑将使RowState被标记为Modified 删除的行只是被隐藏起来 该行的RowState值是Deleted 新行在定义时被标记为detached 当这些行被附加到DataTable上时 被标记为Added 通过设置DataView的RowStateFilter属性 可以指定DataView显示某些特殊的数据版本 如 dataView RowStateFilter DataViewRowState Added DataViewRowState ModifiedCurrent 7 4 3DataViewRowState的值 7 5创建表间关系 DataRelation对象使两个DataTable对象可以通过DataColumn对象相互引用 它类似于主键 外键关系 我们称之为主 从 master detail 关系 DataRelation对象包含在一个DataRelationCo

温馨提示

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

评论

0/150

提交评论