




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
商务网站设计与开发,温浩宇西安电子科技大学,第14章数据库应用开发基础,内容,14.1数据库接口ADO.NET,Web应用程序对数据库服务器的访问需要在网络协议的支持下构建会话(Session),在此基础上,应用程序可以向数据库服务器发出数据的操作请求,比如增加数据、查询数据等,数据库服务器则会根据请求对数据进行操作或返回查询结果。虽然各种不同的RDBMS都尽可能遵循新版本的SQL的标准,但应用程序依然不能用相同的代码来访问不同的RDBMS。这一方面是因为不同的RDBMS中SQL语法并不完全相同,更重要的方面是每个RDBMS都有不同的建立会话、传输SQL、返回数据结果的网络协议。虽然通常RDBMS都会提供一组数据库访问的应用程序接口(API),但对于应用程序的开发者而言,不同的接口函数、不同的协议规则不仅提高了学习的难度,而且当数据库进行升级或移植时难度巨大。如果有一套统一的API作为访问不同RDBMS的接口,则会有效降低开发难度,显著降低开发和维护成本。,14.1数据库接口ADO.NET,ODBC的结构图,14.1数据库接口ADO.NET,ADO的结构图,14.1数据库接口ADO.NET,ADO.NET的结构图,14.1数据库接口ADO.NET,ADO.NET中包含了一系列核心对象来构建高效、广泛适用的数据库访问方式。其中,Connection对象负责创建于数据源(不一定是RDBMS)的连接;Command对象可以向数据库服务器发出SQL命令,完成数据增、删、改、查,执行存储过程,收发参数信息等;DataReader对象可以产生一个只读的记录集,从而提供高效率的数据读取方式;DataAdapter对象建立了从数据源到DataSet对象的桥梁,其中利用了Command对象来执行多种SQL命令以完成DataSet的数据加载和数据回写。ADO.NET引入了DataSet的概念,这是一个驻于内存的数据缓冲区,它可以包含多个类似关系型数据库中的表的对象DataTable。DataSet替代了ADO原有的Recordset对象,提高了程序的交互性和可扩展性,尤其适合于分布式的应用场合。不管数据来源于一个关系型的数据库,还是来源于一个XML文档,都可以用统一的编程模型加载到DataSet中,并对其中的数据进行操作。,14.2连接数据源Connection对象,可以使用Connection对象来连接数据源,而根据数据源的类型(比如SQLServer、Oracle等)要使用DbConnection类的某个子类。例如,访问OLEDB的数据源需要使用OleDbConnection,访问SQLServer数据库需要SqlConnection。,14.2连接数据源Connection对象,ConnectionString为可以设置的属性。针对特定的数据源,需要给出特定的“连接字符串”,其中包含了数据库地址、名称、用户名和密码等信息。下面代码给出两个典型的ConnectionString值:DataSource=00;InitialCatalog=crm_db;PersistSecurityInfo=True;UserID=crm_user;Password=123456;ConnectTimeout=30或者DataSource=.;InitialCatalog=DbExamples;IntegratedSecurity=True;ConnectTimeout=30,14.2连接数据源Connection对象,DbConnection类常用方法usingSystem.Data.SqlClient;/构建连接字符串stringconnectionString=DataSource=.;InitialCatalog=DbExamples;IntegratedSecurity=True;ConnectTimeout=30;/实例化SqlConnection对象SqlConnectionconnection=newSqlConnection(connectionString);connection.Open();/*这里添加代码完成数据的操作*/connection.Close();,14.2连接数据源Connection对象,/在异常处理try/catch块中打开数据连接并完成数据的操作tryconnection.Open();/*这里添加代码完成数据的操作*/catch(Exceptionex)/当出现异常时要执行的语句Response.Write(ex.Message);finally/无论如何都要执行的语句connection.Close();/结束SqlConnection对象的范围,并释放对象,14.3执行SQL命令Command对象,通过Connection对象建立了与数据库的连接后,就可以使用SQL语言来完成数据的增、删、改、查。这四项数据操作的基本功能可以被简称为CRUD,即Create、Read(或Retrieve)、Update和Delete(或Destroy)。对于数据库中已有的数据表,我们可以通过SQL中的Insert、Delete、Update和Select语句分别来完成增、删、改、查的操作。在ADO.NET中,这些SQL语句通过Command对象传输到数据库服务器中,并获取数据库的反馈。DbCommand类是构建Command对象的基类,它的派生类包括SqlCommand(用于SQLServer数据库)、SqlCommand(用于Oracle数据库)、OleDbCommand(用于OLEDB接口)、OdbcCommand(用于ODBC接口)等。,14.3执行SQL命令Command对象,DbCommand类常用属性表,14.3执行SQL命令Command对象,DbCommand类常用方法表,14.3执行SQL命令Command对象,使用DbCommand类在数据库中进行数据的增、删、改、查操作,首先在SQLServer数据库中建立了一个名为“tb_客户”的表。,14.3执行SQL命令Command对象,/构建连接字符串stringconnectionString=DataSource=.;InitialCatalog=DbExamples;IntegratedSecurity=True;ConnectTimeout=30;/构建SQL字符串stringqueryString=INSERTINTOtb_客户+(简称,全称,行业,地址,邮编,座机+,手机,联系人,创建时间,修改时间,备注)+VALUES+(浩瀚,深圳浩瀚电子公司,集成电路,深圳南山区明德路2号,002200,1391111111,李浩瀚,2016-1-1,2016-1-1,新客户);,14.3执行SQL命令Command对象,/实例化SqlConnection对象,并规定了SqlConnection对象的范围using(SqlConnectionconnection=newSqlConnection(connectionString)SqlCommandcommand=newSqlCommand(queryString,connection);/实例化SqlCommand对象try/在异常处理try/catch块中打开数据连接并完成数据的操作connection.Open();inti=command.ExecuteNonQuery();Response.Write(执行完毕,+i+条数据受到影响);catch(Exceptionex)/当出现异常时要执行的语句Response.Write(ex.Message);finally/无论如何都要执行的语句connection.Close();/结束SqlConnection对象的范围,并释放对象,14.3执行SQL命令Command对象,上述代码执行了一条INSERT语句,同样的,DELETE和UPDATE语句都可以用以上的代码结构,只是字符串变量queryString的赋值不同而已,例如“删除”数据的操作代码为:stringqueryString=DELETEFROMtb_客户WHERE简称=浩瀚;“修改”数据的操作代码为:stringqueryString=UPDATEtb_客户SET全称=深圳浩瀚医疗器械公司WHERE简称=浩瀚;,14.3执行SQL命令Command对象,查询操作与非查询操作最大的不同是,查询操作会返回一个查询结果集。对于关系型数据库系统而言,查询结果集是一个二维表,ADO.NET中提供了DataReader对象来读取结果集中的数据。Command对象使用ExecuteReader函数(而不是ExecuteNonQuery函数)实例化一个DataReader对象,随后就可以使用DataReader对象的Read函数来逐条读取结果集中的每一个数据项。,14.3执行SQL命令Command对象,/构建SQL字符串stringqueryString=SELECTTOP10*FROMtb_客户WHERE简称=浩瀚;/实例化SqlCommand对象SqlCommandcommand=newSqlCommand(queryString,connection);/实例化SqlDataReader对象SqlDataReaderreader=command.ExecuteReader();while(reader.Read()Response.Write(简称:+reader简称+;);Response.Write(全称:+reader全称+;);Response.Write();,14.3执行SQL命令Command对象,完成对数据的各种增、删、改、查操作是建立数据库管理系统的基石,不论操作有多么复杂,本质上都是形成各种SQL语句传输到数据库服务器中来执行。ASP.NET程序的主要任务就是提供用户界面以获取用户对数据的操作需求,下面我们通过简单的ASP.NET代码把上述的数据增、删、改、查操作继承在一个页面中。,14.4读取数据DataReader,可以使用Command对象向数据库传输增、删、改、查的SQL指令。对于非查询的操作,SQLServer服务器会返回操作所影响的行数,而对于查询操作,则返回一个二维表结构的结果集,这是就需要DataReader对象来读取这些数据。DataReader对象读取数据时只能从头到尾单向读取(forward-only),这主要是出于效率的考虑。实际上这种单向读取数据的方式完全满足Web程序设计的需求。DbDataReader类是构建DataReader对象的基类,它的派生类包括SqlDataReader(用于SQLServer数据库)、OracleDataReader(用于Oracle数据库)、OleDbDataReader(用于OLEDB接口)、OdbcDataReader(用于ODBC接口)等。,14.4读取数据DataReader,DbDataReader类常用属性表,14.4读取数据DataReader,DbDataReader类常用方法表,14.4读取数据DataReader,在DbDataReader类的方法中有多个以某种类型获取数据的方法,比如GetString、GetInt32等,这些方法虽然可以获取指定列的值,但参数中只能用使用列序号,而不能使用列的名称。比如下列三行代码都可以获得第2列(字段名为“简称”)的值,并输出到HTML中:Response.Write(简称:+reader1+;);Response.Write(简称:+reader简称+;);Response.Write(简称:+reader.GetString(1)+;);当然,使用列序号需要注意,与C/C+语言一样,C#的数组下标是从0开始的;另外,使用列名称的可读性和可维护性都要更优。特别是,如果使用列序号,一旦数据库表中的列顺序发生变化,可能会带来程序的运行异常。,14.4读取数据DataReader,使用Command对象执行SQL查询命令时已经给出了使用DataReader对象的方法,其中与DataReader对象有关的核心代码如下:stringqueryString=SELECTTOP10*FROMtb_客户WHERE简称=浩瀚;/构建SQL字符串/实例化SqlCommand对象SqlCommandcommand=newSqlCommand(queryString,connection);SqlDataReaderreader=command.ExecuteReader();/实例化SqlDataReader对象while(reader.Read()Response.Write(简称:+reader简称+;);Response.Write(全称:+reader全称+;);Response.Write();reader.Close();,14.4读取数据DataReader,在Response对象输出字符串时,输出一个完整的内容。Response.Write();/输出Table的起始标签Response.Write(简称全称);/输出标题行while(reader.Read()Response.Write(+reader简称+reader全称+);/输出数据行Response.Write();/输出Table的终结标签,14.4读取数据DataReader,为了提高开发效率,ASP.NET提供了大量的Web服务器控件,其中在服务器端运行的Table控件就可以很好地帮助构建HTML中的。while(reader.Read()TableRowtempRow=newTableRow();T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际化商圈商铺物业费支付及国际化服务合同
- 公共场所临时清洁人员雇佣协议
- 《招投标流程优化与标的招标代理服务合同》
- 节能环保工业厂房宿舍租赁及节能减排协议
- 个人股权代持解除及股权转让服务协议
- 生态农业工厂租赁与技术服务合同
- 股权激励与股权结构调整合作协议书范本
- 2025【各类合同范本汇编】【标准合同文本】带条件的不动产买卖合同
- 2025版关于续签劳动合同协议书范本
- 离婚协议财产分割及子女抚养费调整合同范本
- 内部审核检查记录表
- 2025年肾脏病学CKD患者透析并发症应对模拟考试答案及解析
- 【《航空发动机最小点火量的计算过程概述》1000字】
- 2025-2026学年七年级上册数学(人教版)教学计划(三篇)
- 八师兵团职工考试题库及答案
- 数据安全国家标准体系(2025 版)
- 潍坊市2026届高三开学调研监测考试物理试题及答案
- 抢救护理记录书写规范与技巧
- 2025至2030中国牙刷丝行业项目调研及市场前景预测评估报告
- 文明礼仪课件高中
- 人教版(2024)八年级上册生物期末复习必考知识点提纲
评论
0/150
提交评论