第9n章 ADONETOk.docx
- 文档编号:8498981
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:58
- 大小:1.98MB
第9n章 ADONETOk.docx
《第9n章 ADONETOk.docx》由会员分享,可在线阅读,更多相关《第9n章 ADONETOk.docx(58页珍藏版)》请在冰豆网上搜索。
第9n章ADONETOk
第9章
数据库的操纵工具——ADO.NET
使用ADO.NET操作数据库是ASP.NET网站开发的重点。
本章从ADO.NET的结构出发,介绍如何使用ADO.NET与数据库建立连接、如何使用ADO.NET与数据库进行交互。
本章以操作SQLServer数据库为例,介绍如何使用ADO.NET的主要对象,最终使读者通过ADO.NET可以操作常用的数据库,如SQLServer、Access、Oracle等。
本章要点(已掌握的在方框中打勾)
什么是ADO.NET
ASP.NET与SQLServer数据库的连接
SqlConnection对象
SqlCommand对象
SqlDataReader对象
SqlDataAdapter对象
DataTable对象
DataSet对象
9.1ADO.NET简介
本节视频教学录像:
9分钟
对数据库操作是ASP.NET网站开发中的重中之重,ADO.NET则是ASP.NET网站通往数据库之间的桥梁。
9.1.1什么是ADO.NET
ADO.NET的名字起源于ADO(ActiveXDataObjects),这是一个广泛的类组,用于在以往的Microsoft技术中访问数据。
ADO.NET是在ADO的基础上发展的新一代数据存取技术,是在.NET开发环境中优先使用的数据访问接口。
通俗地讲,ADO.NET就是设计了一系列对各种类型数据的访问形式,并提供了对应的类,在类中提供了与对应数据交互的属性和方法,编程者可以通过这些属性和方法很方便地对各种数据源进行存取操纵,例如SQL数据库、Access数据库、Oracle数据库、XML文件等。
在ADO.NET中,可以使用多种.NETFramework数据提供程序来访问数据源。
.NETFramework提供的数据提供程序主要有以下几种。
⑴SQLServer.NETFramework数据提供程序:
使用System.Data.SqlClient命名空间,用于访问SQLServer数据库。
⑵Oracle.NETFramework数据提供程序:
使用System.Data.OracleClient命名空间,用于访问Oracle数据库。
⑶OLEDB.NETFramework数据提供程序:
使用System.Data.OleDb命名空间,用于访问OLEDB公开的数据源,例如Access数据库等。
⑷ODBC.NETFramework数据提供程序:
使用System.Data.Odbc命名空间,用于访问ODBC公开的数据源,例如VisualFoxPro数据库等。
在这些数据提供程序中,我们主要使用SQLServer.NETFramework数据提供程序和OLEDB.NETFramework数据提供程序。
ADO.NET的最大特点就是支持对数据的无连接方式的访问,减少了与数据库的活动连接数目,从而减少了多个用户争用数据库服务器上有限资源的可能性。
9.1.2ADO.NET的结构
ADO.NET的结构如图所示。
ADO.NET有5个主要的对象。
⑴Connection:
用于连接到数据库或其他数据源。
⑵Command:
用于在数据库中检索、更新、删除、插入数据等。
⑶DataReader:
从数据库或数据源提供数据流。
这些数据是只读属性。
DataReader对象没有公用的构造函数,因而不能像其他类对象一样可以通过构造函数来实例化,只能使用Command对象中的ExecuteReader方法来创建一个DataReader对象。
DataReader对象适用于与数据源保持连接方式下的顺序读取数据。
⑷DataAdapter:
用于将数据源中的数据填充到DataSet中,并将在DataSet中的数据更新后保存到数据库中。
通常称DataAdapter为“数据适配器”,把DataAdapter看做是DataSet和数据库之间的桥梁。
⑸DataSet:
数据集,是驻留在内存中的数据库,其中包含表、视图、表之间的关系等。
通常在无连接方式下使用DataSet。
9.2ADO.NET与数据库的连接
本节视频教学录像:
27分钟
在ADO.NET中,对数据库进行操作时,需要事先使用Connection请求连接,以便进行客户端相关信息的认证,比如用户名、密码以及访问数据库等。
本节介绍几种常用数据库的连接方法。
9.2.1ADO.NET与SQLServer数据库的连接
SQLServer.NETFramework数据提供程序位于System.Data.SqlClient命名空间中,它使用SqlConnection对象与MicrosoftSQLServer数据库建立连接。
通常有以下两种形式的连接字符串。
1.在连接字符串中指定服务器名、用户ID、用户密码、数据库名等信息
例如:
stringconnstring="server=servername;uid=username;pwd=password;database=dbname";
SqlConnectionconn=newSqlConnection(connstring);
conn.Open();
或者:
stringconnstring=
"DataSource=servername;uid=username;pwd=password;InitialCatalog=dbname";
SqlConnectionconn=newSqlConnection(connstring);
conn.Open();
说明:
连接字符串中的“servername”是指局域网中提供SQLServer服务的服务器和SQLServer的实例名;如果一台机器只安装一个SQLServer的实例,也可以直接指定服务器名;如果安装SQLServer的服务器是本机,则可写为“localhost”,否则可以用IP地址或域名指定。
“username”和“password”是指登录SQLServer数据库所使用的用户名和密码。
“dbname“是指所要连接到的数据库名称。
【范例9-1】创建一个ASP.NETWeb应用程序,利用DropDownList控件将Student数据库中的Student表中的学号字段中的所有记录显示出来。
➊在SQLServer2008中,以sa账户登录,附加Student数据库(随书光盘)。
➋在VisualStudio2010中,新建ASP.NET网站,添加一个不使用母版页的页面Default2.aspx,切换到页面设计视图,向页面上拖放一个DropDownList控件,如图所示。
➌打开Default2.aspx.cs文件,在Default2.aspx.cs文件中代码的最上方,添加引用命名空间的代码。
usingSystem.Data;
usingSystem.Data.SqlClient;
➍在Page_Load事件中添加程序执行代码。
全部源代码如下。
01protectedvoidPage_Load(objectsender,EventArgse)
02{
03if(!
Page.IsPostBack)//判断是否是首次加载页面
04{
05//与数据库连接字符串
06stringconnStr="server=.\\sqlexpress;uid=sa;pwd=123;database=Student";
07SqlConnectionconn=newSqlConnection(connStr);//创建SqlConnection对象
08conn.Open();//打开与数据库的连接
09SqlCommandcmd=newSqlCommand();//创建SqlCommand对象
10cmd.Connection=conn;
11cmd.CommandText="select*fromstudentinfo";//执行的SQL语句
11SqlDataReaderdr=cmd.ExecuteReader();//创建SqlDataReader对象
12this.DroDownListNO.DataSource=dr;//将DropDownListNO控件与数据源绑定
13this.DroDownListNO.DataTextField="SNO";
14//在ASP.NET程序中,数据源与控件绑定时,此句必不可少,否则在页面上显示不出结果
15this.DroDownListNO.DataBind();
16if(conn.State==ConnectionState.Open)
17{
18conn.Close();//判断连接状态,若连接就关闭连接
19}
20}
21}
【运行结果】
按【F5】键调试并运行,浏览器中的运行结果如图所示。
【范例分析】
本范例中,第6行就是设置ADO.NET与SQLServer数据库连接的连接字符串;第7~12行使用了ADO.NET与SQLServer数据库访问的对象,分别是SqlConnection对象、SqlCommand对象和SqlDataReader对象,这些对象将在下节重点介绍;第13~16行是将获取的数据源绑定到DropDownList控件上显示出来;第17~20行是用来判断ADO.NET与SQLServer数据库的连接状态,如果处于连接状态就断开连接。
在程序中的引用方式为:
//与数据库连接字符串
stringconnStr=ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
//创建SqlConnection对象
SqlConnectionconn=newSqlConnection(connStr);
2.在连接字符串中指定数据库服务器名、集成Windows安全认证方式、数据库名等信息
例如:
stringconnStr="server=servername;IntegratedSecurity=SSPI;database=dbname";
SqlConnectionconn=newSqlConnection(connStr);
conn.Open();
或者:
stringconnStr="DataSource=servername;IntegratedSecurity=SSPI;InitialCatalog=dbname";
SqlConnectionconn=newSqlConnection(connStr);
conn.Open();
说明:
连接字符串中的IntegratedSecurity=SSPI表示集成Windows系统安全认证方式,这种连接方式也成为“可信任连接”,这是连接到SQLServer数据库更可靠的方法,因为它不会在连接字符串中暴露用户的ID以及密码。
【范例9-2】创建一个ASP.NET网站,利用GridView控件将Student数据库中的StudentInfo表中的学号字段中的所有记录显示出来。
➊在SQLServer2008中,以sa账户登录,附加Student数据库(随书光盘\Simple\ch07)。
➋在VisualStudio2010中,新建ASP.NET网站,添加一个不使用母版页的页面Default2.aspx,切换到页面设计视图,向页面上拖放一个GridView控件。
如图所示。
➌在Web.config文件中添加以下
01
02 03IntegratedSecurity=SSPI;database=Student"/> 04 ➍打开Default2.aspx.cs文件,在Default2.aspx.cs文件中代码的最上方,添加需要引用的命名空间。 usingSystem.Data; usingSystem.Data.SqlClient; usingSystem.Configuration; ➎在Page_Load事件中添加程序执行代码。 全部源代码如下(代码7-2.txt)。 01protectedvoidPage_Load(objectsender,EventArgse) 02{ 03if(! Page.IsPostBack)//判断是否是首次加载页面 04{ 05//与数据库连接字符串 06stringconnStr=ConfigurationManager. 07ConnectionStrings["ConnStr"].ConnectionString; 08//创建SqlConnection对象 09SqlConnectionconn=newSqlConnection(connStr); 10conn.Open();//打开与数据库的连接 11//创建SqlDataAdapter对象 12SqlDataAdapterad=newSqlDataAdapter("Select*fromStudentInfo",conn); 13//创建DataSet对象 14DataSetds=newDataSet(); 15ad.Fill(ds);//填充DataSet对象 16//对GridView对象绑定数据源 17this.GridView1.DataSource=ds; 18//此句必须有,否则页面上显示不出数据 19this.GridView1.DataBind(); 20if(conn.State==ConnectionState.Open) 21{//判断连接状态,若连接就关闭连接 22conn.Close(); 23} 24} 25} 【运行结果】 按【F5】键调试并运行,结果如图所示。 【范例分析】 本范例中,步骤➌的程序代码是将连接字符串写在Web.config文件的 步骤➌的第06行就是从Web.config中读取数据库连接的连接字符串;第8~15行使用了ADO.NET与SQLServer数据库访问的对象,分别是SqlConnection对象、SqlCommand对象和DataSet对象,这些对象将在下节重点介绍;第16~19行是将获取的数据源绑定到GridView控件上显示出来;第21~23行是用来判断ADO.NET与SQLServer数据库的连接状态,如果处于连接状态就断开连接。 9.2.2ADO.NET与Access数据库的连接 OLEDB.NETFramework数据提供程序位于System.Data.OleDb命名空间中,可以通过OLEDB提供程序与OLEDB数据源进行通信,例如Access数据库等。 使用Access数据库时连接字符串的形式如下。 "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=AccessDatabaseName" 说明: 连接字符串中的“Microsoft.Jet.OLEDB.4.0”表示使用微软提供的Access数据库提供程序。 “AccessDatabaseName”表示Access数据库文件名(包含完整的路径)。 【范例9-3】创建一个ASP.NETWeb应用程序,利用GridView控件将Student数据库中的StudentInfo表中的学号字段中的所有记录显示出来。 ➊在VisualStudio2010中,新建ASP.NETWeb网站。 在项目App_Data文件夹中,使用Access2003创建一个Student.mdb数据库(数据库见随书光盘)。 ➋添加一个不使用母版页的页面Default2.aspx,切换到页面设计视图,向页面上拖放一个GridView控件。 ➌在Default2.aspx.cs文件中添加引用命名空间。 UsingSystem.data; usingSystem.Data.OleDb;//操作Access数据库必须添加此命名空间 ➍打开Default2.aspx.cs文件,在Page_Load事件中添加程序执行代码。 全部源代码如下(代码7-3.txt)。 01protectedvoidPage_Load(objectsender,EventArgse) 02{ 03if(! Page.IsPostBack)//判断是否是首次加载页面 04{ 05//与数据库连接字符串,在本示例中数据库文件放在 06//网站数据目录,即与web.config文件在同一目录下 07stringConnStr=@"Provider=Microsoft.Jet.OLEDB.4.0; 08DataSource="+Server.MapPath(@"Student.mdb"); 09//创建OleDbConnection对象 10OleDbConnectionconn=newOleDbConnection(ConnStr); 11conn.Open(); 12//创建OleDbCommand对象 13OleDbCommandcmd=newOleDbCommand(); 14cmd.Connection=conn; 15cmd.CommandText="Select*fromStudentInfo"; 16//创建OleDbDataAdapter对象 17OleDbDataAdapterad=newOleDbDataAdapter(cmd); 18DataSetds=newDataSet(); 19//填充DataSet对象 20ad.Fill(ds); 21this.GridView1.DataSource=ds; 22//此句必须有,否则页面上显示不出数据 23this.GridView1.DataBind(); 24if(conn.State==ConnectionState.Open) 25{//判断连接状态,若连接就关闭连接。 26conn.Close(); 27} 28} 29} 【运行结果】 按【F5】键调试并运行,结果如图所示。 【范例分析】 本范例中,第7、8行就是从Web.config中读取数据库连接的连接字符串;第9~20行使用了ADO.NET与OLEDB数据源(Access数据库属于OLEDB数据源)的访问对象,分别是OleDbConnection对象、OleDbCommand对象和DataSet对象,这些对象的使用与SqlConnection对象、SqlCommand对象等的用法一致;第21~23行是将获取的数据源绑定到GridView控件上显示出来;第24~27行是用来判断ADO.NET与Access数据库的连接状态,如果处于连接状态就断开连接。 9.3ADO.NET与SQLServer数据库的交互 本节视频教学录像: 56分钟 本节以操作SQLServer数据库为例,从ADO.NET数据访问对象出发,介绍如何使用ADO.NET与数据库交互,最后设计一个数据库访问类,完整地介绍如何使用ADO.NET操作数据库。 为了方便应用程序对SQLServer数据库的操作,ADO.NET提供了许多对象模型,比较常用的有SqlConnection对象、SqlCommand对象、SqlDataAdapter对象、SqlDataReader对象、SqlCommandBuilder对象、SqlParameter对象和SqlTransaction对象等。 这些对象提供了对SQLServer数据源的各种不同的访问功能,全部归类于System.Data.SqlClient命名空间下,使用时必须引用该命名空间。 9.3.1使用SqlConnection对象连接数据库 要想访问数据库,首先必须连接到数据库,SqlConnection类提供了对SQLServer数据库的连接。 在使用SqlConnection对象连接SQLServer数据库时,程序员需要提供一个连接字符串。 连接字符串由一系列关键字和值组成,各关键字之间用分号隔开,关键字不区分大小写。 例如,建立与SQLServer数据库的连接。 stringconnstring= "DataSource=servername;uid=username;pwd=password;InitialCatalog=dbname"; SqlConnectionconn=newSqlConnection(connstring); conn.Open(); 例如,判断连接状态,如果连接状态为Open则关闭连接。 if(conn.State==ConnectionState.Open) {//判断连接状态,若连接就关闭连接。 conn.Close(); } 9.3.2使用SqlCommand对象在连接状态下操作数据 与数据库连接成功后,就可以对数据库中的数据进行: 插入、更新、删除、查询等操作。 在ADO.NET中,有两种操作数据库的方式,一种是采用无连接的方式,即先将数据库中的数据读取到本机的DataSet中,或者直接读取到本机的DataTable中;另一种就是在保持连接的方式下,通过执行指定的SQL语句完成需要的功能。 无论采用哪种方式,都可以通过SqlCommand对象提供的方法传递对数据库操作的命令,并返回命令执行的结果。 操作命令的类型可以是SQL语句,也可以是存储过程。 在保持连接的方式下,操作数据库的一般步骤如图所示。 SqlCommand对象提供有多种完成对数据库操作的方法。 1.ExecuteNonQuery方法 该方法执行SQL语句,并返回因操作所受影响的行数。 一般将其用于使用Update、Insert、Selected、Delete等语句直接操作数据库中的表数据。 ExecuteNonQuery方法对于Update、Insert和Delete等语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9n章 ADONETOk