版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ASP.NET WebASP.NET Web应用开发技术应用开发技术ADO.NET体系结构体系结构1使用使用ADO.NET数据提供程序数据提供程序2使用使用DataSet架构架构3目目 录录9.1 ADO.NET9.1 ADO.NET体系结构体系结构ADO.NET核心组件结构核心组件结构 是应用程序与数据源之间的一座桥梁,包含一组用于访是应用程序与数据源之间的一座桥梁,包含一组用于访问特定数据库,执行问特定数据库,执行SQLSQL语句并获取值的语句并获取值的.NET.NET类。类。 什么是什么是ADO.NET数据提供程序数据提供程序l ConnectionConnection类:建立与数据源的
2、连接类:建立与数据源的连接l CommandCommand类:执行类:执行SQLSQL命令及存储过程命令及存储过程l DataReaderDataReader类:提供对类:提供对SelectSelect语句查询结果的快速、只语句查询结果的快速、只读、只进的访问方法读、只进的访问方法l DataAdapterDataAdapter类:数据源与类:数据源与DataSetDataSet之间的桥梁之间的桥梁 核心类及其作用核心类及其作用数据提供程序模型结构数据提供程序模型结构.NET应用程序SQL Server.NET提供程序OLE DB.NET提供程序Oracle.NET提供程序OLE DB驱动程序
3、SQL Server数据库OLE DB数据源Oracle数据库ODBC.NET提供程序ODBC驱动程序ODBC数据源是数据驻留在是数据驻留在内存中的表示内存中的表示形式。形式。不管数据源是不管数据源是什么,它都可什么,它都可提供一致的关提供一致的关系编程模型。系编程模型。 什么是什么是DataSet DataSet中的核心对象中的核心对象l DataTableCollectionDataTableCollection:数据表的集合:数据表的集合l DataRelationCollectionDataRelationCollection:关联的集合:关联的集合l DataTableDataTab
4、le:数据表,或称内存表:数据表,或称内存表l DataViewDataView:数据视图,:数据视图,DataTableDataTable中数据的不同表现形式中数据的不同表现形式l DataRowDataRow:数据行,关系表中的一行数据:数据行,关系表中的一行数据l DataColumnDataColumn:数据列,关系中的一个属性:数据列,关系中的一个属性l PrimaryKeyPrimaryKey:主键:主键命名空间描述System.Data包含关键的容器类,这些类为关系、表、视图、数据集、行和约束建立模型,另外还包含了基于连接的数据对象要实现的关键接口的定义System.Data.C
5、ommon包含由各种 .NET Framework 数据提供程序共享的抽象类,具体的数据提供程序继承这些类,创建自己的版本。System.Data.OleDb包含用于连接OLE DB数据提供程序的类,主要有OleDbCommand、OleDbConnection、OleDbDataReader及OleDbDataAdapter等。System.Data.SqlClient包含用于连接微软SQL Server数据库所需的类,包括SqlDbCommand、SqlDbConnection、SqlDbDataReader及SqlDbDataAdapter等,这些类使用经过优化的SQL Server的T
6、DS接口。System.Data.OracleClient包含连接Oracle所需的类,包括OracleCommand、OracleConnection、OracleDataReader及OracleDataAdapter等,这些类使用经过优化的Oracle的OCI接口。System.Data.Odbc包含连接大部分ODBC驱动所需的类,包括OdbcCommand、OdbcConnection、OdbcDataReader及OdbcDataAdapter等9.2 9.2 使用使用.NET.NET数据提供程序数据提供程序访问数据库访问数据库使用Connection对象建立到数据源的连接在连接上建
7、立Command对象,通过它向数据库发送SQL命令接收并处理SQL命令的返回结果释放数据库操作对象,并关闭数据库连接访问数据库的一般步骤访问数据库的一般步骤 ADO.NET示例示例 查询查询Authors表中的所有记录并在页面上列表显示表中的所有记录并在页面上列表显示(9-1.aspx) public partial class exam9_1 : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) string connstr = Data Source=.sqlexpress;Initial Cat
8、alog=pubs; Integrated Security=True; SqlConnection conn = new SqlConnection(connstr); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = select * from authors; try conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); GridView1.DataSource = dr; GridView1.DataBind(); dr.Close(
9、); catch finally conn.Close(); 查询查询Authors表中的所有记录并在页面上列表显示表中的所有记录并在页面上列表显示(后台后台)运行结果运行结果 由于要操作由于要操作SQL ServerSQL Server数据库,所以使用了数据库,所以使用了SQL Server SQL Server .NET .NET提供程序。也可以使用提供程序。也可以使用OLE DB .NETOLE DB .NET提供程序等。提供程序等。 本例使用本例使用SqlConnectionSqlConnection、SqlCommandSqlCommand及及SqlDataReaderSqlData
10、Reader等类,位于等类,位于SqlClientSqlClient命名空间下,需要事先导入。命名空间下,需要事先导入。 在创建连接对象时,需要数据库的位置以及登录验证信息在创建连接对象时,需要数据库的位置以及登录验证信息等,这些信息通过连接字符串指定。等,这些信息通过连接字符串指定。 在连接对象上调用在连接对象上调用openopen方法打开连接,使用完成后调用其方法打开连接,使用完成后调用其closeclose方法关闭连接方法关闭连接 使用使用SqlCommandSqlCommand对象向数据库发送对象向数据库发送SelectSelect语句,本例使用语句,本例使用SqlDataReader
11、SqlDataReader对象操作返回的结果集。对象操作返回的结果集。 本例使用富数据控件本例使用富数据控件GridViewGridView显示查询结果显示查询结果程序说明:程序说明: ADO.NETADO.NET使用使用ConnectionConnection对象建立到数据源的连接对象建立到数据源的连接 针对不同的数据提供程序要使用不同的连接对象针对不同的数据提供程序要使用不同的连接对象 使用连接字符串指定连接参数使用连接字符串指定连接参数 连接对象使用完成后一定要及时释放连接对象使用完成后一定要及时释放 为提供效率,通常会使用连接池来缓存和共享连接为提供效率,通常会使用连接池来缓存和共享连
12、接 Connection对象的基本说明对象的基本说明SQL ProviderSqlConnectionOLE DB ProviderOleDbConnectionODBC ProviderOdbcConnectionOracle ProviderOracleConnection 连接字符串连接字符串名称:名称:通常使用通常使用DataSource、Server、Address等等值:值:通常填服务器的通常填服务器的IP地址或主机名,或地址或主机名,或localhost名称:名称:通常使用通常使用Initial Catalog,或者,或者DataBase值:值:填连接到的数据库实例名填连接到的数
13、据库实例名集成身份验证:集成身份验证:Integrated Security=true SQL Server验证:验证:使用用户名和口令验证使用用户名和口令验证使用集成身份验证的连接字符串:使用集成身份验证的连接字符串:Server=localhost; Initial Catalog=Pubs; Integrated Security=true 使用使用SQL Server身份验证的连接字符串:身份验证的连接字符串:Server=localhost; Initial Catalog=Pubs; UID=dbuser; Pwd=dbpwd使用使用SqlClient连接连接SQL Server数
14、据库:数据库:using System.Data.SqlClient; / 导入导入SqlClient命名空间命名空间string constr = “Data Source=(local); Initial Catalog=Northwind; Integrated Security=true” SqlConnection conn = new SqlConnection( constr ); / 建立连接对象建立连接对象使用使用OracleClient 连接连接 Oracle数据库:数据库:using System.Data.OracleClient; / 导入导入 OracleClien
15、t 命名空间命名空间string constr = Server=orcl; UID=scott; pwd=tigerOracleConnection conn = new OracleConnection(connstr); 连接到数据库连接到数据库使用使用OLE DB连接连接ACCESS数据库:数据库:using System.Data.OleDb; / 导入导入OleDb命名空间命名空间string constr = “Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:dbprjpubs.mdb”OleDbConnection conn =
16、new OleDbConnection(connstr);使用使用OLE DB连接连接ODBC数据:数据:using System.Data.OleDb; string constr = “Provider=SQLOLEDB; Data Source=.sqlexpress; Integrated Security=SSPI;Initial Catalog=pubs” OleDbConnection conn = new OleDbConnection(connstr); 打开连接打开连接conn.Open( ); 关闭连接关闭连接conn.Close( );conn.Dispose( );
17、处理异常处理异常SqlConnection conn = new SqlConnection(connstr); try conn.Open(); / 打开到数据库的连接打开到数据库的连接 / 操作数据库操作数据库catch (Exception ex) / 处理异常处理异常finally conn.Dispose(); / 释放连接释放连接 using (SqlConnection conn = new SqlConnection(connstr) conn.Open(); / Do work here.使用使用using简化编程简化编程当代码执行完毕,或者因抛出异常而跳出范围时,系统将自动
18、清理当代码执行完毕,或者因抛出异常而跳出范围时,系统将自动清理using 语句中指定的对象(语句中指定的对象(conn对象)对象)protected void Page_Load(object sender, EventArgs e) string connstr = Data Source=V2SJEZVGXXSG66JSQLEXPRESS;Initial Catalog=pubs;Integrated Security=True;/采用windows集成的身份验证 string qrystr = select title_id,title,price from titles;using (
19、SqlConnection conn = new SqlConnection(connstr) SqlCommand cmd = new SqlCommand(qrystr,conn); conn.Open(); SqlDataReader r1 = cmd.ExecuteReader(); while (r1.Read() Response.Write(r10 +| ); Response.Write(r1title + | ); Response.Write(r12 + ); r1.Close(); 实例:显示书籍的书号、书名和价格。实例:显示书籍的书号、书名和价格。9-2.aspx 数据
20、库连接池数据库连接池想要获得连接想要获得连接返回一个连接返回一个连接返回一个已连接返回一个已连接好的空闲连接好的空闲连接应用程序应用程序连接池连接池Connection1Connection2Connection3ADO.NET通常根据连接字符串来自动创建连接池,多个通常根据连接字符串来自动创建连接池,多个连接若连接字符串相同则使用同一个连接池,若连接字符连接若连接字符串相同则使用同一个连接池,若连接字符串不同,则创建一个新的连接池。串不同,则创建一个新的连接池。连接池对开发者完全透明,数据访问代码不需要做任何更连接池对开发者完全透明,数据访问代码不需要做任何更改。调用改。调用Open()方法
21、实际上是从池中取出一个连接;调方法实际上是从池中取出一个连接;调用用Close()方法实际上是将连接归还到池中。方法实际上是将连接归还到池中。 保存连接字符串保存连接字符串 保存到保存到Web.config文件的文件的节节 保存到保存到Web.config文件的文件的节节 获取连接字符串获取连接字符串using System.Configuration;string connstr = ConfigurationManager.ConnectionStringsconnstr.ConnectionString;从从节获取节获取using System.Configuration;string
22、connstr = ConfigurationManager. AppSettingsconnstr;从从节获取节获取实例:显示书籍的书号、书名和价格。实例:显示书籍的书号、书名和价格。9-2.aspx 使用使用CommandCommand对象来执行对象来执行SQLSQL命令并返回结果命令并返回结果 针对不同的数据提供程序要使用不同的针对不同的数据提供程序要使用不同的CommandCommand对象对象 Command对象概述对象概述SQL ProviderSqlCommandOLE DB ProviderOleDbCommandODBC ProviderOdbcCommandOracle P
23、roviderOracleCommand可以使用各种命令对象的构造函数来创建命令对象可以使用各种命令对象的构造函数来创建命令对象/创建命令对象,同时制定所用数据库连接及要执行的创建命令对象,同时制定所用数据库连接及要执行的SQLSQL语句语句SqlCommand cmd = new SqlCommand(“select * from authors”,conn) /单独创建命令对象,然后通过属性制定所用连接和单独创建命令对象,然后通过属性制定所用连接和SQLSQL命令命令 SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd
24、.CommandText = select * from authors;/也可以在连接对象上调用也可以在连接对象上调用CreateCommand()CreateCommand()方法创建相关的命令对象方法创建相关的命令对象 SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = select * from authors; Command对象的常用属性对象的常用属性 CommandTextCommandText:获取或设置针对数据源运行的文本命令。通常指定获取或设置针对数据源运行的文本命令。通常指定为一条为一条SQLSQL语句,或者一
25、个存储过程的名称。语句,或者一个存储过程的名称。 CommandTypeCommandType:指定指定CommandTextCommandText的类型,其取值为的类型,其取值为System.Data.CommandTypeSystem.Data.CommandType枚举。枚举。 cmd.CommandType = CommandType.StoredProcedure; /存储过程 cmd.CommandType = CommandType.Text; /sql语句 cmd.CommandType = CommandType.TableDirect;表示要执行的是表,查询结果返回的是整个
26、表 ConnectionConnection:获取或设置命令对象依赖的数据库连接。获取或设置命令对象依赖的数据库连接。 ParametersParameters:获取命令参数的集合,当执行参数化查询时该属性非获取命令参数的集合,当执行参数化查询时该属性非常重要。常重要。 Command对象的常用方法对象的常用方法取消取消Dbcommand的执行的执行 释放命令对象所使用的所有资源释放命令对象所使用的所有资源 Command对象的常用方法对象的常用方法返回类型为返回类型为SqlDataReader。用于用户进行的。用于用户进行的查查询操作询操作,返回查询结果。使用,返回查询结果。使用SqlDat
27、aReader对对象的象的Read()方法进行逐行读取。方法进行逐行读取。 执行一个执行一个非查询的非查询的SQL语句或存储过程语句或存储过程,它的返它的返回值类型为回值类型为int型。多用于执行增加,删除,修型。多用于执行增加,删除,修改数据。返回受影响的行数。改数据。返回受影响的行数。 它的返回值类型多为它的返回值类型多为int类型。类型。该命令在集合查询中非常有用,如要统计某本书某天的销售量。 使用使用ExecuteReader( )方法方法protected void btnqry_Click(object sender, EventArgs e) string connstr = C
28、onfigurationManager.ConnectionStrings“nwconnstr.ConnectionString;string sql = select orderid, orderdate, shipaddress from orders + where customerid = + tbxuid.Text + ;using (SqlConnection conn = new SqlConnection(connstr) SqlCommand cmd = conn.CreateCommand();cmd.CommandText = sql;conn.Open();SqlDat
29、aReader dr = cmd.ExecuteReader();GridView1.DataSource = dr;GridView1.DataBind();dr.Close();在在NorthWind数据数据库库中,根据中,根据顾顾客号客号查询该顾查询该顾客的客的订单订单信息信息9-3.aspxStringBuilder sb = new StringBuilder();sb.Append (select orderid, orderdate, shipaddress from orders where customerid = );sb.Append(tbxuid.Text);sb.Ap
30、pend();cmd.CommandText = sb.ToString();使用使用StringBuilder对对象象辅辅助拼接助拼接SQLcmd.CommandText = select orderid, orderdate, shipaddress from orders where customerid = custid;SqlParameter parameter = new SqlParameter( custid, SqlDbType.VarChar);parameter.Value = tbxuid.Text;cmd.Parameters.Add(parameter);SqlD
31、ataReader dr = cmd.ExecuteReader();使用参数化使用参数化查询查询cmd.CommandText = select orderid, orderdate, shipaddress from orders where customerid = custid and orderdate between fromdate and todate;cmd.Parameters.AddWithValue (custid, tbxuid.Text);cmd.Parameters.AddWithValue (“formdae , “1996-01-01;);cmd.Parame
32、ters.AddWithValue (todate, “1997-01-01;);查询查询指定用指定用户户指定指定时间时间段内的所有段内的所有订单订单9-3.aspxcmd.CommandText = select orderid, orderdate, shipaddress from orders where customerid = custid and orderdate between fromdate and todate; cmd.Parameters.Add(custid, SqlDbType.VarChar); cmd.Parameters.Add(fromdate, Sql
33、DbType.DateTime); cmd.Parameters.Add(todate, SqlDbType.DateTime); cmd.Parameterscustid.Value = tbxuid.Text; cmd.Parametersfromdate.Value = 1996-7-4; cmd.Parameterstodate.Value = 1997-7-4;说明:参数占位符的语法与数据提供程序的关系说明:参数占位符的语法与数据提供程序的关系数据提供程序数据提供程序参数占位符语法参数占位符语法System.Data.SqlClient以 parametername 格式使用命名参数
34、 System.Data.OracleClient 以 :parmname(或parmname)格式使用命名参数 System.Data.OleDb 使用由问号 (?) 表示的位置参数标记 System.Data.Odbc 使用由问号 (?) 表示的位置参数标记 using (OleDbConnection conn = new OleDbConnection(connstr) OleDbCommand cmd = conn.CreateCommand(); cmd.CommandText = select orderid, orderdate, shipaddress from orders
35、 + where customerid = ? and orderdate between ? and ?; cmd.Parameters.AddWithValue (custid, tbxuid.Text); cmd.Parameters.AddWithValue (fromdate, 1996-01-01); cmd.Parameters.AddWithValue (todate, 1997-01-01); conn.Open(); OleDbDataReader dr = cmd.ExecuteReader(); GridView1.DataSource = dr; GridView1.
36、DataBind(); dr.Close();使用使用OleDb方式方式连连接接SQL Server数据数据库库, ,查询顾查询顾客指定客指定时间时间段的段的订单订单 使用使用ExecuteScalar( )方法方法查询查询EmployeesEmployees表,统计所有员工的数量表,统计所有员工的数量 using (SqlConnection conn = new SqlConnection(connstr) SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = select count(*) from employees; con
37、n.Open(); int num = (int)cmd.ExecuteScalar(); lblmsg.Text = string.Format(员工总数:员工总数:0, num); ExecyteScalar方法返回查询结果中方法返回查询结果中第一行第一列第一行第一列的值,若结的值,若结果中包含多行或多列,系统将忽略其余数据。该方法常用于返回果中包含多行或多列,系统将忽略其余数据。该方法常用于返回SQL聚合函数的查询结果。聚合函数的查询结果。 使用使用ExecuteNonQuery( )方法方法对对EmployeesEmployees表执行增删改操作表执行增删改操作using (SqlCo
38、nnection conn = new SqlConnection(connstr) conn.Open();SqlCommand cmd = conn.CreateCommand();cmd.CommandText = Insert into employees(LastName, FirstName) + values (Tom, Cat);int num = cmd.ExecuteNonQuery();lblmsg.Text += string.Format( 共插入记录:共插入记录: 0 条条,num);cmd.CommandText = Update employees set La
39、stName = Jerry + where EmployeeID = 9;num = cmd.ExecuteNonQuery();lblmsg.Text += string.Format( 共修改记录:共修改记录: 0 条条,num);cmd.CommandText = Delete from employees where EmployeeID 9;num = cmd.ExecuteNonQuery();lblmsg.Text += string.Format( 共删除记录:共删除记录: 0 条条,num); ExecyteNonQuery方法执行不返回结果集的命令,如方法执行不返回结果集的命令,如Insert, Update, Delete,只,只返回影响的行数返回影响的行数。 数据库系统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 抑郁症心理护理效果评估-洞察分析
- 移动支付安全风险-洞察分析
- 新材料对制造业升级影响研究-洞察分析
- 异常行为检测与分析-洞察分析
- 碳中和战略与能源转型-洞察分析
- 碳酸饮料行业品牌营销策略-洞察分析
- 土地开发与政策引导-洞察分析
- 文物保存技术发展趋势-洞察分析
- 关于重阳节的广播稿(8篇)
- 单位开工仪式发言稿范文(9篇)
- 美术课堂教学评价标准及评分表
- 养护手册桥梁管理
- 血栓弹力图课件-PPT
- ICP-MS作用及功能的使用课件
- 校园一日安全巡查记录表(共1页)
- 设备移交清单模板 (2)
- 江苏省南通市2021届新高考物理一模试卷含解析
- 高校科技成果转化问题与对策建议
- (完整版)公司企业HSE管理体系及制度
- 校长任职期间经济责任履行述职报告
- 药物研发与评价研讨之包装材料和容器变更的技术要求及案例分析
评论
0/150
提交评论