第9n章 ADONETOk文档格式.docx
《第9n章 ADONETOk文档格式.docx》由会员分享,可在线阅读,更多相关《第9n章 ADONETOk文档格式.docx(58页珍藏版)》请在冰豆网上搜索。
使用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;
InitialCatalog=dbname"
说明:
连接字符串中的“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数据库的连接状态,如果处于连接状态就断开连接。
<
connectionStrings>
addname="
ConnStr"
connectionString="
server=localhost;
/>
/connectionStrings>
在程序中的引用方式为:
//与数据库连接字符串
stringconnStr=ConfigurationManager.ConnectionStrings["
].ConnectionString;
//创建SqlConnection对象
SqlConnectionconn=newSqlConnection(connStr);
2.在连接字符串中指定数据库服务器名、集成Windows安全认证方式、数据库名等信息
stringconnStr="
server=servername;
IntegratedSecurity=SSPI;
database=dbname"
SqlConnectionconn=newSqlConnection(connStr);
DataSource=servername;
InitialCatalog=dbname"
连接字符串中的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文件中添加以下<
connectionStrings/>
节点代码。
01<
02<
connectionString="
server=.\sqlexpress;
03IntegratedSecurity=SSPI;
04<
➍打开Default2.aspx.cs文件,在Default2.aspx.cs文件中代码的最上方,添加需要引用的命名空间。
usingSystem.Configuration;
➎在Page_Load事件中添加程序执行代码。
全部源代码如下(代码7-2.txt)。
03if(!
06stringconnStr=ConfigurationManager.
07ConnectionStrings["
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文件的<
节中,目的是将其作为全局变量使用,在Web开发中非常实用。
步骤➌的第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)。
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="
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}
本范例中,第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数据库的连接。
例如,判断连接状态,如果连接状态为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等语