第9章使用ADO.NET访问数据库本章讲述的主要内容9.1ADO.NET和数据库通用接口9.2数据库连接对象(Connection)9.3数据库命令对象(Command)9.4数据读取对象(DataReader)9.5数据适配器对象(DataAdapter9.1ADO.NET和数据库通用接口9.1.1ADO.NET概述ADO.NET是对ADO的一个跨时代的改进,它们之间有很大的差别。最主要表现在ADO.NET可通过DateSet对象在“断开连接模式”下访问数据库,即用户访问数据库中的数据时,首先要建立与数据库的连接,从数据库中下载需要的数据到本地缓冲区,之后断开与数据库的连接。此时用户对数据的操作(查询、添加、修改、删除等)都是在本地进行的,只有需要更新数据库中的数据时,才再次与数据库连接,在发送修改后的数据到数据库后关闭连接。这样大大减少了因连接过多(访问量较大时)对数据库服务器资源的大量占用。9.1ADO.NET和数据库通用接口9.1.2数据库通用接口美国微软公司提供的数据库通用接口程序,经过了ODBC→OLEDB→ADO→ADO.NET几个发展阶段。1.ODBC通用数据库接口ODBC(OpenDatabaseConnectivity,开放数据库互联)2.ADO通用数据库接口ADO(ActiveDataObject,动态数据对象)9.1ADO.NET和数据库通用接口9.1.3ADO.NET的数据模型ADO.NET采用了层次管理的结构模型,各部分之间的逻辑关系如下图所示。9.1ADO.NET和数据库通用接口9.1.4ADO.NET中的常用对象在ADO.NET中数据集与数据提供器是两个非常重要,而又相互关联的核心组件。它们二者之间的关系如下图所示。9.2数据库连接对象(Connection)9.2.1Connection对象概述Connection类提供了对数据源连接的封装。类中包括连接方法及描述当前连接状态的属性。在Connection类中最重要的属性是ConnectionString(连接字符串),该属性用来指定服务名称、数据源信息及其他登录信息。ConnectionString中有两个重要的重要的部分:字符串的内容和数据提供器名称。字符串内容中包含有“DataSource”(数据源)、“InitialCatalog”(默认连接数据库)及用于描述用户身份的“UserID”和“Password”。9.2数据库连接对象(Connection)9.2.2创建Connection对象SqlConnection连接对象名=newSqlConnection(连接字符串);或:SqlConnection连接对象名=newSqlConnection();连接对象名.ConnectionString=连接字符串;9.2数据库连接对象(Connection)9.2.3Connection对象的属性和方法1.Connection对象的属性9.2数据库连接对象(Connection)9.2.3Connection对象的属性和方法2.Connection对象的方法9.2数据库连接对象(Connection)9.2.4数据库的连接字符串1.连接字符串中的常用属性9.2数据库连接对象(Connection)9.2.4数据库的连接字符串2.连接到SQLServer的连接字符串SQLServer的.NETFramework数据提供程序,通过SqlConnection对象的ConnectionString属性,设置或获取连接字符串,可以连接MicrosoftSQLServer7.0或更高版本。其语法格式为:DataSource=服务器名或IP;InitialCatalog=数据库名;UserID=用户名;Password=密码或者Server=服务器名或IP;Database=数据库名;Uid=用户名;Pwd=密码;Trusted_Connection=False9.2数据库连接对象(Connection)9.2.4数据库的连接字符串3.连接到OLEDB数据源的连接字符串OLEDB的.NETFramework数据提供器,通过OleDbConnection对象的ConnectionString属性,设置或获取连接字符串,提供与OLEDB公开数据源的连接或SQLServer6.x更早版本的连接。对于OLEDB.NETFramework数据提供程序,连接字符串格式中的Provider关键字是必需的,必须为OleDbConnection连接字符串指定提供程序名称。下列连接字符串使用Jet提供程序连接到一个MicrosoftAccess数据库。Provider=Microsoft.Jet.OLEDB.4.0;DataSource=数据库名;UserID=用户名;Password=密码9.2数据库连接对象(Connection)9.2.4数据库的连接字符串4.连接字符串的存放位置(1)把连接字符串写在程序中一般的初级教程多采用这种方法。这样写当然没有错误,但是要在许多页面中写入连接字符串,这时候如果需要改动连接字符串(比如换用户名和密码)的话,就得逐个修改。(2)把连接字符串放在web.config文件中connectionStringsaddname=连接字符串名connectionString=数据库的连接字符串providerName=System.Data.SqlClient或System.Data.OldDb或System.Data.Odbc//connectionStrings9.3数据库命令对象(Command)9.3.1创建Command对象1.使用构造函数创建Command对象下面是使用构造函数创建SqlCommand对象,并通过该对象的构造函数参数来设置特定属性值,其语法格式如下:SqlCommand命令对象名=newSqlCommand(查询字符串,连接对象名);或SqlCommand命令对象名=newSqlCommand();命令对象名.Connection=连接对象名;命令对象名.CommandText=查询字符串;9.3数据库命令对象(Command)9.3.1创建Command对象2.使用CreateCommand()方法创建Command对象下面是使用Connection对象的CreateCommand()方法创建SqlCommand对象的语法格式:SqlCommandCommand对象名=Connection对象名.CreateCommand();Command对象名.CommandText=查询字符串;9.3数据库命令对象(Command)9.3.2Command对象的属性和方法9.3数据库命令对象(Command)9.3.2Command对象的属性和方法9.4数据读取对象(DataReader)9.4.1DataReader对象的常用属性及方法1)FieldCount属性:该属性用来获取当前行中的列数,如果未放置在有效的记录集中,则返回0,否则返回列数(字段数),默认值为-1。2)HasRows属性:用来获取DataReader对象中是否包含任何行。3)Read()方法:使用该方法可将Reader指向当前记录,并将记录指针移到下一行,从而可使用列名或列的次序来访问列的值。如果到了数据表的最后,则返回一个布尔值false。4)GetValue()方法:5)GetValues()方法:6)NextResult()方法:7)Close()方法:9.4数据读取对象(DataReader)9.4.2使用DataReader对象【例9-4】使用DataReader对象设计一个用户登录身份验证页面,页面打开时如图9-7所示,用户在输入了正确的用户名和密码后,程序将根据用户级别跳转到不同的页面。例9-49.5数据适配器对象(DataAdapter)9.5.1DataAdapter对象概述DataAdapter对象是一个双向通道,用来把数据从数据源中读到一个内存表中,以及把内存中的数据写回到一个数据源中。两种情况下使用的数据源可能相同,也可能不相同。而这两种操作分别称作填充(Fill)和更新(Update)。DataAdapter对象通过Fill方法和Update方法来提供这一桥接器。9.5数据适配器对象(DataAdapter)9.5.2DataAdapter对象的属性和方法常用的创建SqlDataAdapter对象的语法格式如下所示:SqlDataAdapter对象名=newSqlDataAdapter(SqlStr,conn);其中SqlStr为Select查询语句或SqlCommand对象,conn为SqlConnection对象。9.5数据适配器对象(DataAdapter)9.5.2DataAdapter对象的属性和方法1.DataAdapter对象的常用属性DataAdapter对象的常用属性见表9-6。9.5数据适配器对象(DataAdapter)9.5.2DataAdapter对象的属性和方法2.DataAdapter对象的常用方法DataAdapter对象的常用方法见表9-7。9.5数据适配器对象(DataAdapter)9.5.2DataAdapter对象的属性和方法3.DataTable对象DataTable对象是内存中一个关系数据库表,可以独立创建也可以由DataAdapter来填充。声明一个DataTable对象的语法格式如下所示:DataTable对象名=newDataTable();一个DataTable对象创建后,通常需要调用DataAdapter的Fill()对其进行填充,使DataTable对象获得具体的数据集,而不再是一个空表对象。9.5数据适配器对象(DataAdapter)9.5.2DataAdapter对象的属性和方法4.DataTable对象的常用属性DataTable对象的常用属性主要有Columns属性、Rows属性和DefaultVIew属性。Columns属性:该属性用于获取DataTable对象中表的列集合。Rows属性:该属性用于获取DataTable对象中表的行集合。DefaultView属性:该属性用于获取可能包括筛选视图或游标位置的表的自定义视图。9.5数据适配器对象(DataAdapter)9.5.2DataAdapter对象的属性和方法4.DataTable对象的常用属性DataTable对象的常用属性主要有Columns属性、Rows属性和DefaultVIew属性。Columns属性:该属性用于获取DataTable对象中表的列集合。Rows属性:该属性用于获取DataTable对象中表的行集合。DefaultView属性:该属性用于获取可能包括筛选视图或游标位置的表的自定义视图。