零点起飞学C#之操作数据库.pptx
《零点起飞学C#之操作数据库.pptx》由会员分享,可在线阅读,更多相关《零点起飞学C#之操作数据库.pptx(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第24章 操作数据库在C#程序开发中,数据库是很重要的一部分。使用数据库,可以存放大量的数据。.NET Framework提供的一个重要的功能是.NET数据访问,它由ADO.NET实现。通过ADO.NET的使用,开发人员可以轻松访问SQL Server、Oracle等数据源,并检索、操作这些数据源中的数据。本章主要给大家详细讲解.NET Framework中的.NET数据访问。24.1 什么是ADO.NETADO.NET是一组向.NET程序员公开数据访问服务的类。它提供了对关系数据、XML和应用程序数据的访问。数据客户端应用程序可以使用ADO.NET来连接到这些数据源,并查询、添加、删除和更新
2、所包含的数据。因此,ADO.NET是.NET Framework中不可或缺的一部分。本节我们来认识ADO.NET。24.1.1 ADO.NET组成结构ADO.NET是.NET Framework的一部分,它包括两大组件:.NET Framework数据提供程序和DataSet(数据集)。对于这两大组件的详细描述如下所示。1.NET Framework数据提供程序.NET Framework数据提供程序是指处理数据的应用程序。.NET Framework中包括四个数据提供程序,具体如下所示。SQL Server.NET Framework数据提供程序,为SQL Server数据库提供服务。OLE
3、 DB.NET Framework数据提供程序,为以OLE DB方式连接的数据源提供服务。ODBC.NET Framework数据提供程序,为ODBC数据源提供服务。Oracle.NET Framework数据提供程序,为Oracle数据库提供服务。注意:本章节只介绍用于SQL Server数据库的SQL Server.NET Framework数据提供程序,其他.NET Framework数据提供程序不做详细介绍。.NET Framework数据提供程序包括Connection、Command、DataReader、DataAdapter等连接对象,即这些对象必须在保持连接数据库或数据源的状
4、态时有效。其中,Connection对象提供与数据库或数据源的连接。Command对象执行对数据库或数据源的操作或命令,如检索、插入、更新、删除等。DataReader对象可以高性能地从数据库或数据源中在保存连接时读取数据。DataAdapter对象是一种数据适配器,它为连接DataSet对象和数据源提供了桥梁。2DataSet(数据集)DataSet是ADO.NET结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。DataSet由一组DataTable对象组成。DataSet能够提供断开式的数据访问和操作,它可以被看作是数据源的数据在内存中的副本。通过DataSet对象,可以检索或更
5、新这些数据,同时保持该副本和数据源一致。24.1.2 ADO.NET基本对象ADO.NET是一组向.NET程序员公开数据访问服务的类。该类有很多的对象,主要有Connection、Command、DataReader、DataAdapter、DataSet、DataView等。下面我们来介绍用于操作SQL Server数据库的Connection、Command、DataReader、DataAdapter、DataSet、DataView等对象。1SqlConnection对象SqlConnection对象用来连接数据库,它表示ADO.NET与SQL Server数据库的唯一的会话。使用Sq
6、lConnection对象连接SQL Server数据库的步骤如下所示。(1)创建连接字符串。连接SQL Server数据库的字符串一般由多个“名称/值”对(“名称”表示连接字符串的属性、“值”表示该属性的值)组合而成,常用属性如下表所示。属 性说 明data source数据源,可以为机器名称或IP地址user id(uid)用户名password(pwd)密码database数据库或SQL Server实例的名称server数据库所在的服务器的名称,一般为机器名称pooling表示是否启用连接池Intergrated Security表示是否使用系统集成验证connection timeo
7、ut连接超时时间,即再次尝试连接数据库时所经历的时间长度,默认值为15秒【示例24-1】下面创建一个连接字符串“data source=(local);uid=sa;pwd=123456;database=Data24”,并保存为connectionString变量。string connectionString=data source=(local);user id=sa;pwd=123456;database=Data24;分析:上述连接字符串包括4个“名称/值”对,用来连接Data24数据库。其中,data source属性指定数据库所在的服务器的名称(“(local)”表示本机);ui
8、d和pwd属性分别指定用户名和密码;database属性指定被连接的数据库的名称。【示例24-2】下面创建一个连接字符串“Data Source=(local);Initial Catalog=FirstSQLServer DB;Integrated Security=True”,并保存为connectionString变量。string connectionString=Data Source=(local);Initial Catalog=Data24;Integrated Security=True;分析:上述连接字符串不包括用户名和密码,是一种信任连接的连接字符串。“Integrate
9、d Security=True”属性指定使用信任连接方式,Initial Catalog属性指定被连接的数据库的名称。(2)创建SqlConnection类的实例。【示例24-3】下面创建一个名称为con的SqlConnection类的实例,并指定该对象使用connec tionString变量的值作为的连接字符串。SqlConnection con=new SqlConnection();/创建SqlConnection类的实例/设置con实例的连接字符串为connectionStringcon.ConnectionString=connectionString;(3)打开数据库的连接,即建
10、立ADO.NET与数据库的会话。【示例24-4】下面在try语句的try块中调用con实例的Open()方法打开数据库的连接。如果连接数据库失败,将在catch块中显示异常信息。trycon.Open();/其他操作catch(Exception ex)Console.WriteLine(ex.Message);/如果连接数据库失败,则显示错误信息(4)关闭数据库的连接。【示例24-5】下面在try语句的finally块中调用con实例的Close()方法关闭数据库的连接,并释放该连接占用的资源。finallyif(con!=null)con.Close();/关闭数据库的连接2SqlComm
11、and对象SqlCommand对象用来执行对数据库的操作,它能够执行指定的SQL语句或存储过程。SqlCommand对象提供了用来执行SQL语句或存储过程的方法,具体如下所示。ExecuteReader()方法:读取数据,并返回SqlDataReader对象。ExecuteNonQuery()方法:执行指定的SQL语句或存储过程,并返回该操作影响的行数。ExecuteXmlReader()方法:读取数据,并返回XmlReader对象。ExecuteScalar()方法:读取数据,并返回结果集合中的第一行第一列的值。【示例24-6】下面cmd实例调用ExecuteReader()方法执行它的SQ
12、L语句或存储过程,返回结果保存为dr对象(类型为SqlDataReader)。SlqDataReader dr=cmd.ExecuteReader();/cmd为SqlCommand类的实例【示例24-7】下面cmd实例调用ExecuteNonQuery()方法执行它的SQL语句或存储过程,返回结果保存为result变量(类型为int)。int result=cmd.ExecuteNonQuery();/cmd为SqlCommand类的实例【示例24-8】下面cmd实例调用ExecuteScalar()方法执行它的SQL语句或存储过程,返回结果保存为result变量(类型为object)。ob
13、ject result=cmd.ExecuteScalar();/cmd为SqlCommand类的实例SqlCommand对象的CommandText属性指定其执行的SQL语句或存储过程的名称。CommandType属性指定其是执行SQL语句还是存储过程。它的值由CommandType枚举指定,包括以下3个值。Text:将CommandText属性的值解释为SQL语句,并以文本方式执行。StoredProcedure:将CommandText属性的值解释为存储过程的名称,并以存储过程方式执行。TableDirect(很少用):将CommandText属性的值解释为表的名称,即直接操作指定的表。
14、【示例24-9】下面设置cmd实例所执行的SQL语句为“select*from Data”。cmd.CommandText=select*from Data;/cmd为SqlCommand类的实例分析:上述SQL语句查询Data表中的所有记录。【示例24-10】下面首先设置cmd实例所执行的存储过程的名称为Pr_GetDatas,然后设置CommandType属性的值为CommandType.StoredProcedure,即执行方式为存储过程。cmd.CommandText=Pr_GetDatas;/cmd为SqlCommand类的实例cmd.CommandType=CommandType.
15、StoredProcedure;/设置执行方式为存储过程3SqlDataReader对象SqlDataReader对象用于提供从SQL Server数据库中快速读取数据的方法,且在读取数据时必须保持与数据库的连接。该对象有三个特征,具体说明如下所示。只能读取数据:不能对数据库执行任何更新、修改或插入操作。只能向前读取数据:即不能再次读取已经被访问的数据。直接把数据传递到对象,Windows Form控件或者Web窗体页。SqlDataReader类的Read()方法可以定位到下一条记录,NextResult()方法可以定位到下一个记录集。【示例24-11】下面在if语句中使用Read()方法读
16、取dr实例的第一条记录的值。如果记录存在,则读取该记录的ID列的值,并保存为idValue变量。if(dr.Read()/dr为SqlDataReader类的实例string idValue=drID.ToString();【示例24-12】下面在while语句中使用Read()方法读取dr实例的所有记录的值,并将每一条记录的ID列的值都保存为idValue变量。while(dr.Read()/dr为SqlDataReader类的实例string idValue=drID.ToString();注意:使用SqlDataReader对象读取数据完成之后,务必要关闭(调用Close()方法)Sql
17、DataReader对象。否则,该对象将一直处于打开状态,并一直占用系统的资源。4DataSet对象DataSet对象用于提供断开式的数据访问机制,它是数据在内存中的一种表现形式。该对象被看作是数据在内存中的副本。DataSet对象包括一个或多个表(DataTable),以及表之间的关系(DataRelation)、约束(Constraint)、外键约束(ForeignKeyConstraint)、唯一约束(UniqueKeyConstraint)等。DataSet对象共包括以下7种对象,具体说明如下所示。DataTable:表示表,由行、列组成的数据集合。DataRow:表示行,由单行数据组
18、成的数据集合。DataColumn:表示列,约束行对象中存储的数据。DataRelation:表示关系,描述表之间的关系。Constraint:表示约束,表中数据所满足的约束条件。ForeignKeyConstraint:表示外键约束,外键关系的列所满足的约束条件。UniqueKeyConstraint:表示唯一约束,表中的数据所满足的唯一约束。5SqlDataAdapter对象SqlDataAdapter表示用于填充DataSet和更新SQL Server数据库的一组数据命令和一个数据库连接。它是DataSet和SQL Server之间的桥接器,用于检索和保存数据。它提供了四种命令,具体说明
19、如下所示。SelectCommand:用于检索(查询)数据。InsertCommand:用于插入数据。UpdateCommand:用于修改数据。DeleteCommand:用于删除数据。SqlDataAdapter对象最常用的方法就是用于填充DataSet对象,该功能由其Fill()方法实现,一般需要以下6个步骤。(1)创建连接字符串。【示例24-13】下面创建一个连接字符串“data source=(local);uid=sa;pwd=123456;database=Data24”,并保存为connectionString变量。string connectionString=data sou
20、rce=(local);user id=sa;pwd=123456;data base=Data24;(2)创建SqlConnection类的实例。【示例24-14】下面创建一个名称为con的SqlConnection类的实例,并指定该实例使用connectionString变量的值作为的连接字符串。SqlConnection con=new SqlConnection();/创建SqlConnection类的实例/设置con实例的连接字符串为connectionStringcon.ConnectionString=connectionString;(3)创建查询数据的SQL语句或存储过程。【
21、示例24-15】下面创建查询Data表的SQL语句“select*from Data”,并保存为cmdText变量。string cmdText=select*from Data;(4)创建SqlDataAdapter类的实例。【示例24-16】下面创建一个名称为cmd的SqlDataAdapter类的实例。该实例的SQL语句为cmd Text变量的值,连接对象为con实例。SqlDataAdapter da=new SqlDataAdapter(cmdText,con);/创建SqlData Adapter 类的实例cmd(5)打开数据库的连接,获取数据并填充到数据集。【示例24-17】下面
22、调用con实例的Open()方法打开数据库的连接,并调用da实例的Fill()方法将获取的数据填充到DataSet对象ds。DataSet ds=new DataSet();/创建DataSet对象dscon.Open();/打开数据库的连接da.Fill(ds);/获取数据,并填充DataSet对象ds(6)关闭数据库的连接。【示例24-18】下面调用con实例的Close()方法关闭数据库的连接,并释放该连接占用的 资源。con.Close();/关闭数据库的连接24.2 操作SQL Server数据库使用ADO.NET可以连接数据库,并查询、添加、删除和更新该数据库所包含的数据。本节我们
23、以SQL Server数据库为例,给大家讲解连接数据库、读取数据、插入数据、修改数据、删除数据和使用DataGirdView控件、ListView控件、TreeView控件显示数据的方法。24.2.1 创建Chapter24窗体应用程序在本例中,我们首先创建一个名为Chapter24的窗体应用程序。【实例24-1】创建了名称为“Chapter24”的Windows Form应用程序,具体步骤如下。(1)在Visual Studio 2010集成开发环境中,创建名称为Chapter24的Windows Form应用程序。(2)右击“解决资源方案管理器”面板中的Form1.cs节点,并选择“重命名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 零点 起飞 C# 操作 数据库
限制150内