第6章 ADONE数据库访问技术_第1页
第6章 ADONE数据库访问技术_第2页
第6章 ADONE数据库访问技术_第3页
第6章 ADONE数据库访问技术_第4页
第6章 ADONE数据库访问技术_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

第6章ADO.NET数据库访问技术6.1ADO.NET概述

ADO.NET是一组向.NET程序员公开数据访问服务的类。ADO.NET为创建分布式数据共享应用程序提供了一组丰富的组件。它提供了对关系数据、XML和应用程序数据的访问,因此是.NETFramework中不可缺少的一部分。ADO.NET支持多种开发需求,包括创建由应用程序、工具、语言或Internet浏览器使用的前端数据库客户端和中间层业务对象。一、ADO.NET结构1、.NETFramework数据提供程序.NETFramework数据提供程序是专门为数据处理以及快速地只进、只读访问数据而设计的组件。包含以下对象:①Connection对象Connection对象提供与数据源的连接。②Command对象Command对象用来执行访问数据库的命令,并从数据源中返回结果。③DataReader对象DataReader对象用于从数据库中检索只读、只进的数据流。④DataAdapter对象DataAdapter对象提供连接DataSet对象和数据源的桥梁。DataAdapter对象使用Command对象在数据源中执行SQL命令,以便将数据加载到DataSet中,并使对DataSet中数据的更改与数据源保持一致。⑤Transaction对象Transaction对象用于事务处理。⑥Parameter对象Parameter对象用于向Command对象传递命令参数。2、DataSet对象DataSet对象专门为独立于任何数据源的数据访问而设计。它可以用于多种不同的数据源,用于XML数据,或用于管理应用程序本地的数据。DataSet包含一个或多个DataTable对象的集合,这些对象由数据行和数据列以及有关DataTable对象中数据的主键、外键、约束和关系信息组成。.NETFramework数据提供程序和DataSet对象的关系如图6.1所示。图6.1ADO.NET结构①DataTable对象DataTable对象代表内存中数据一个表,它由许多DataRow对象和DataColumn对象组成。②DataRow对象DataRow对象表示DataTable中的一行数据。③DataColumn对象DataColumn对象表示DataTable一列。二、ADO.NET相关的命名空间①System.Data.Odbc定义了基于ODBC.NETFramework数据提供程序访问ODBC数据源的类集合。②System.Data.OleDb定义了基于OLEDB.NETFramework数据提供程序访问OLEDB数据源的类集合。③System.Data.SqlClient定义了基于SQLServer.NETFramework数据提供程序访问SQLServer数据源的类集合。④System.Data.OracleClient定义了基于Oracle.NETFramework数据提供程序访问Oracle数据源的类集合。⑤System.Data.SqlTypes

为SQLServer2005中的本机数据类型提供类。这些类为.NETFramework公共语言运行库(CLR)所提供的数据类型提供了一种更为安全和快速的替代项。6.2数据连接对象Connection一、Connection对象Connection对象代表了与数据源的连接。它代表与数据源进行的唯一会话。如果是客户端/服务器数据库系统,该对象可以等价于到服务器的实际网络连接。1、常用属性①ConnectionStringConnectionString属性用来获取或设置用于打开数据库的字符串。②ConnectionTimeoutConnectionTimeout属性用来获取在尝试建立连接时终止尝试,并生成错误之前所等待的时间。默认值为15秒。

③DataBaseDataBase属性用来获取当前数据库或连接打开后要使用的数据库的名称。④DataSourceDataSource属性用来获取数据源的服务器名或文件名。⑤StateState属性用来获取连接的当前状态。该属性的取值有:Broken、Closed、Connecting、Executing、Fetching、Open。2、常用方法

①OpenOpen方法使用ConnectionString所指定的属性设置打开数据库连接。格式:Connection对象名.Open();②CloseClose方法用于关闭到数据库的连接。格式:Connection对象名.Close();③ChangeDatabaseChangeDatabase方法为打开的Connection更改当前数据库。格式:Connection对象名.ChangeDatabase(数据库名)④CreateCommandCreateCommand方法创建并返回一个与该Connection对象关联的Command对象。格式:Connection对象名.CreateCommand()⑤BeginTransaction开始数据库事务。格式:Connection对象名.BeginTransaction()Connection对象名.BeginTransaction(事务名称)二、创建Connection对象1、连接到SQLServerSqlConnection类用于声明和创建连接到SQLServer数据库的Connection对象,其构造函数为:①SqlConnection()②SqlConnection(connectionString)其中,connectionString为string类型,是连接到服务器的字符串。例6-1连接一个SQLServer数据库,如果连接成功,则输出“连接成功”信息,否则输出异常信息。2、连接到OLEDB数据源OleDbConnection类用于声明和创建连接到OLEDB数据源的Connection对象,其构造函数为:①OleDbConnection()②OleDbConnection(connectionString)其中,connectionString为string类型,是连接到OLEDB数据源的字符串。例6-2连接一个SQLServer数据库,如果连接成功,则输出“连接成功”信息,否则输出异常信息。OLEDB数据源可以是任何关系数据库,不同的关系数据库,OLEDB提供程序不同。表6-1列举了常用关系数据库的OLEDB提供程序。关系数据库OLEDB提供程序SQLServerSQLOLEDBORACLE

MSDAORAACCESSMicrosoft.Jet.OLEDB.4.0

表6-1常用的OLEDB提供程序3、连接到ODBC数据源OdbcConnection类用于声明和创建连接到ODBC数据源的Connection对象,其构造函数为:①OdbcConnection()②OdbcConnection(connectionString)其中,connectionString为string类型,是连接到ODBC数据源的字符串。例6-3连接一个SQLServer数据库,如果连接成功,则输出“连接成功”信息,否则输出异常信息。ODBC数据源可以是任何关系数据库,也可以是Excel和文本文件。不同的ODBC数据源,连接字符串不同,下面列举出常见的ODBC数据源的连接字符串:①SQLServer数据库

“Driver={SQLServer};Server=服务器名;Trusted_Connection=Yes;Database=数据库名;"②Oracle数据库"Driver={MicrosoftODBCforOracle};Server=服务器名;PersistSecurityInfo=False;Trusted_Connection=Yes"

③Access数据库“Driver={MicrosoftAccessDriver(*.mdb)};DBQ=数据库文件名"④Excel文件“Driver={MicrosoftExcelDriver(*.xls)};DBQ=文件名"⑤文本文件“Driver={MicrosoftTextDriver(*.txt;*.csv)};DBQ=文件路径"⑥DSN

“DSN=数据源名”

4、连接到Oracle数据源OracleConnection类用于声明和创建连接到Oracle数据源的Connection对象,其构造函数为:①OracleConnection()②OracleConnection(connectionString)其中,connectionString为string类型,是连接到Oracle数据源的字符串。例6-4连接一个Oracle数据库,如果连接成功,则输出“连接成功”信息,否则输出异常信息。三、关闭Connection对象关闭Connection对象需要调用Close或Dispose方法。6.3执行数据库命令对象Command一、Command对象Command对象用来执行访问数据库的命令。1、常见属性①Connection获取或设置Command对象使用的Connection对象。②CommandTimeout获取或设置在终止执行命令的尝试并生成错误之前的等待时间。默认值为30秒。③CommandText获取或设置要对数据源执行的命令。该命令可以是SQL语句、存储过程名称或表名。④CommandType获取或设置一个值,该值指示CommandText属性的命令类型。该属性的值可以是:Text、TableDirect或StoredProcedure之一。在C#中CommandType枚举定义了CommandType的取值。⑤Parameters获取ParameterCollection集合。参见SQL参数传递。⑥Transaction获取或设置Transaction对象。参见事务处理。2、常见方法①ExecuteNonQuery对连接执行命令并返回受影响的行数。该方法不返回结果集。即执行命令,但不返回结果。格式:Command对象.ExecuteNonQuery()②ExecuteReader对连接执行命令并生成一个DataReader对象。格式:Command对象.ExecuteReader()③ExecuteScalar执行查询,并返回查询所返回的结果集中第一行的第一列,而忽略其他行或列。二、创建Command对象1、利用Connection对象的CreateCommand方法创建例6-5向student关系表中插入一条记录。2、利用SqlCommand类创建。SqlCommand类的构造函数有:①SqlCommand()②SqlCommand(stringcmdText)③SqlCommand(stringcmdText,SqlConnectionconnection)④SqlCommand(stringcmdText,SqlConnectionconnection,SqlTransactiontransaction)例6-6统计student关系表中记录数。3、利用OleDbCommand类创建。①OleDbCommand()②OleDbCommand(stringcmdText)③OleDbCommand(stringcmdText,OleDbConnectionconnection)④OleDbCommand(stringcmdText,OleDbConnectionconnection,OleDbTransactiontransaction)也可以利用OdbcCommand类和OracleCommand类创建Command对象。三、SQL参数传递1、Parameter对象(1)常见属性①DbTypeDbType属性用来获取或设置Parameter对象的数据类型。常见取值有:BigInt、Int、TinyInt、Real、Float、Decimal、Char、Nchar、Ntext、NVarChar和DateTime等。在C#中SqlDbType枚举、OleDbType枚举、OdbcType枚举和OracleType枚举定义了DbType属性的取值。②DirectionDirection属性获取或设置一个值,该值指示参数是只可输入、只可输出、双向还是存储过程返回值参数。常见取值有:Input、InputOutput、Output和ReturnValue。默认值为Input。在C#中ParameterDirection枚举定义了Direction属性的取值。③ParameterNameParameterName属性用来获取或设置SQL命令中参数的名称。④SizeSize属性用来获取或设置Parameter对象的最大大小(以字节为单位)。⑤ValueValue属性用来获取或设置Parameter对象的值。(2)创建Parameter对象①利用SqlParameter类、OleDbParameter类、OdbcParameter类和OracleParameter类创建。②利用Command对象的CreateParameter方法创建。2、ParameterCollection集合ParameterCollection集合表示与Command对象相关联的参数集合。(1)常见属性Count返回ParameterCollection集合中Parameter对象的个数。(2)常见方法①AddAdd方法用于将Parameter对象加入到ParameterCollection集合中。其格式:ParameterCollection集合.Add(Parameter对象)②ClearClear方法用于将ParameterCollection集合中所有Parameter对象删除。其格式:ParameterCollection集合.Clear()③RemoveRemove方法用于将ParameterCollection集合中指定的Parameter对象删除。其格式:ParameterCollection集合.Remove(Parameter对象)例6-7执行带参数的存储过程。6.4数据读取器对象DataReader

DataReader对象能够提供一种从数据库读取行的只读、只进数据流。不能直接实例化DataReader,即实例是调用ExecuteReader()方法后从相应数据库的命令对象(如SqICommand)中返回的。

一、常见属性1、FieldCountFieldCount属性用于获取当前行中的列数。2、HasRowsHasRows属性用于获取一个值,该值指示DataReader对象是否包含一行或多行。如果DataReader对象包含一行或多行,则为true;否则为false。3、IsClosedIsClosed属性用于获取一个值,该值指示DataReader对象是否已关闭。如果指定的DataReader对象已关闭,则为true;否则为false。二、常见方法1、CloseClose方法用来关闭DataReader对象。其格式:DataReader对象.Close();2、ReadRead方法使DataReader对象前进到下一条记录。如果存在多个行,则返回true;否则返回false。其格式:DataReader对象.Read()例6-8对student表按学号查询学生信息。

3、NextResult当读取批处理SQL语句的结果时,NextResult方法使数据读取器前进到下一个结果集。如果存在多个结果集,则返回true;否则返回false。其格式:DataReader对象.NextResult()例6-9执行多条SQL语句。4、GetValueGetValue方法用于获取当前记录行指定列的值。其格式:DataReader对象.GetValue(i)其中,参数i为整型,指示列号。

5、GetValuesGetValues方法用于获取当前行的集合中的所有属性列。其格式为:DataReader对象.GetValues(ObjArray)其中,参数ObjArray为Object类型的数组。该方法调用后当前行的集合中的所有属性列的值复制到ObjArray数组中,并返回属性列数。6、IsDBNullIsDBNull方法获取一个值,该值指示列中是否包含不存在的或已丢失的值。其格式为:DataReader对象.IsDBNull(i)其中,参数i为整型,指示列号。三、DataReader对象的声明和创建DataReader对象的声明可以利用SqlDataReader类、OleDbDataReader类、OdbcDataReader类和OracleDataReader类。利用Command对象的ExecuteReader方法创建DataReader对象。参见例6-9

6.5数据适配器对象DataAdapterDataAdapter对象用作DataSet对象和数据源之间的桥接器,以便检索和保存数据。一、DataAdapter对象1、常见属性①SelectCommandSelectCommand属性用于获取或设置一个执行检索命令的Command对象,用于在数据源中选择记录。②InsertCommandInsertCommand属性用于获取或设置一个执行插入命令的Command对象,用于在数据源中插入记录。③DeleteCommandDeleteCommand属性用于获取或设置一个执行删除命令的Command对象,用于在数据源中删除记录。④UpdateCommandUpdateCommand属性用于获取或设置一个执行更新命令的Command对象,用于在数据源中更新记录。2、常见方法①FillFill方法用于填充DataSet或DataTable。其格式:1)DataAdapter对象.Fill(ds)参数ds为DataSet类型的对象。2)DataAdapter对象.Fill(ds,srcTable)参数ds为DataSet类型的对象,srcTable为string类型,表示DataSet对象中DataTable名称。②UpdateUpdate方法为DataSet或DataTable中每个已插入、已更新或已删除的行调用相应的INSERT、UPDATE或DELETE语句,以更新数据库。其格式:1)DataAdapter对象.Update(ds)参数ds为DataSet类型的对象。2)DataAdapter对象.Update(dt)参数dt为DataTable类型的对象。二、DataAdapter对象的声明和创建可以利用SqlDataAdapter类、OleDbDataAdapter类、OdbcDataAdapter类和OracleDataAdapter类声明和创建DataAdapter对象。例6-10按学号从student表中查询学生信息。例6-11对student表插入记录。6.6数据集DataSetDataSet对象是ADO.NET结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。DataSet对象由一组DataTable对象组成。一、DataSet内部结构DataSet内部结构如图6.2所示。二、DataSet对象的声明和创建可以用DataSet类声明和创建DataSet对象。DataSet类的构造函数有:①DataSet()②DataSet(StrName)其中,参数StrName为string类型,用于指定DataSet对象名称DataRelationCollectionDataSetExtendedPropertiesDataTableCollectionDataTableDataViewChildRelationsParentRelationsConstrainsExtendedPropertiesPrimaryKeyDataRowCollectionDataRowDataColumnCollectionDataColumnExtendedProperties图6.2DataSet内部结构三、使用DataSet对象访问数据库使用DataSet对象访问数据库的步骤:①创建Connection对象,连接数据库。②创建Command对象,设置执行命令和命令类型。③创建DataAdapter对象和DataSet对象,用DataAdapter对象的Fill方法填充DataSet对象的DataTable对象。④如果命令是查询数据库,则输出DataTable对象的每行每列。如果要对数据库增、删、改操作,则对DataTable对象做相应的增、删、改操作,并通过DataAdapter对象的Update方法将更新后的数据提交到数据库中。例6-12对student表删除记录。四、DataSet对象和数据控件绑定具有DataBindings属性或DataSource属性的控件称为数据控件,在C/S模式和B/S模式应用程序设计中有时需要将DataSet对象和数据控件绑定,以实现一些简单的用户界面。具有DataBindings属性的数据控件有:Label、TextBox、ComboBox、checkBox、dateTimePicker、maskedTextBox、monthCalendar、numericUpDown、pictureBox、radioButton等。具有DataSource属性的数据控件有:listBox、DataGridView等。1、将DataSet对象和具有DataBindings属性的数据控件绑定数据控件的DataBindings属性是只读的,该属性获取控件的数据绑定。通过该属性将DataSet对象与数据控件绑定的格式为:

温馨提示

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

评论

0/150

提交评论