-
1 任务一 网站...
-
2 补充知识
网站用户注册页面
通过使用VS2012开发环境完成一些实例的操作来了解和掌握对ADO.NET的全局体系结构,概述如何通过使用数据提供者(Data Provider),来实现使用ADO.NET访问不同的数据源,从数据库中读取数据,向数据库中添加数据,修改已经存储在数据库中的数据,并将数据显示在应用程序的Web页面上,了解数据集的含义,以及如何使用数据集。
【任务要点】
操作数据库的第一步必须是先建立与数据库的连接。Connection对象专门肩负着这样的重任。该对象提供了很多属性和方法以便用户顺利进行连接操作。接下来开始通过实例学习Connection对象及使用。

EShop数据库(创建该数据库)
【案例一】
测试与SQLServer数据库建立连接
【具体步骤】
(1)打开Visual Studio新建网站项目YiZeShopTest。
(2)添加Web窗体并命名为ConnectionTest.aspx。
(3)从工具箱中拖一个Label控件到窗体中,并命名该控件名为lblMessage。
(4)转到窗体的代码视图,在代码中添加引用using System.Data.SqlClient。
(5)双击新建窗体的空白处,在窗体的Page_Load()事件中添加如下代码:

本例使用了Connection对象连接到SQL Server数据库。注意要引入的命名空间,同时要正确使用驱动程序的类名。在本例中,添加的引用都为System.Data.SqlClient。
在Page_Load()事件中已经新建一个数据库连接实例SqlConnection conn=new SqlConnection();,实例名称为conn。接着设置了conn的连接字符串属性。

为了验证是否连接成功,例子中使用State属性,来获取当前连接状态:conn.State.ToString();最后关闭连接:conn.Close();。

最终效果
【案例二】实现用户注册页面的功能
注册Register.aspx页面,在设计模式下界面如图1-1所示。

本窗体用于接收用户输入的数据。但是,这样的窗体在用户将数据保存起来之前,是没有多少用处的,接下来就是现在将要完成的任务,当单击【注册】按钮的时候执行代码将数据保存到数据库中。本项目使用的数据库是SQL Server数据库。数据库表的结构见表1-1~表1-4。
表1-1 UserInfo(用户信息表)

表1-2 Category(商品目录表)

表1-3 Product(商品信息表)

表1-4 Administrator(管理员信息表)

实例运行结果如图1-2所示。

【具体步骤】
(1)在YiZeShopTest应用程序中打开Register.aspx页。
(2)在后台编码文件的顶部添加下列导入语句,因为此处将用到这些命名空间中的类:using System.Data.SqlClient;
(3)为注册按钮添加事件处理程序,以前该控件只是为了测试用于验证的不同文本框的内容。现在,该按钮将负责构建和执行SQL INSERT语句(该语句将一条新用户记录添加到数据库中)。

说明:
当要使用SQL Server 数据提供者存储数据时,必须引用using System.Data.SqlClient;命名空间。
使用Connection对象和SQL查询字符串创建一个新的Command对象;
SqlCommand cmd=new SqlCommand(sql,conn);
针对打开的数据库所执行的任何代码应该(至少是)总是位于try---finally代码块中,这为我们再执行意想不到的中断之前提供一个关闭连接的机会。
在代码块中,使用的是Command对象的ExecuteNonQuery()方法,因为Insert语句并不返回结果(可以选择查看受影响的行数,但是这里暂且把它忽略)。可根据命令的执行结果——成功或失败(由doredirect变量进行跟踪)——把用户定向到指定页面:


存入数据库中
【背景知识】
一、相关命名空间的引用
1.System.Data命名空间
在程序中,要使用ADO.NET对象模型中的类时,必须首先引用System.Data这个命名空间。因为System.Data这个命名空间中包括大部分组成ADO.NET架构的基础对象类别,例如,DataSet对象、DataTable对象、DataColumn对象、DataRelation对象。
2.System.Data.OleDb命名空间
当要使用OLE DB数据提供都来存取数据时,必须引用System.Data.OleDb这个命名空间。System.Data.OleDb这个命名空间定义了OLE DB数据操作组件的对象类别,例如,OleDbConnection类、OleDbCommand类、OleDbDataAdapter类及OleDbDataReader类。
3.System.Data.SqlClient命名空间
当要使用SQL Server数据提供者存取数据时,必须引用System.Data.SqlClient这个命名空间。System.Data.SqlClient这个命名空间定义了SQL数据操作组件的对象类别,例如,SqlConnection类、SqlCommand类、SqlDataAdapter类及SqlDataReader类。
表1-5简要列举了.NET框架中与ADO.NET相关的几个命名空间。

二、Connection对象及使用
Connection对象主要用于建立与指定数据源的连接,处理访问数据源时所需要的安全设置。如果没有利用Connection对象将数据库打开,是无法从数据库中获取数据的。在这里介绍Connection对象常用的属性和方法。
1.Connection对象的常用方法
Open():利用ConnectionString所指定的属性设置打开一个数据库连接。
Close():关闭与数据库的连接。
CreateCommand():创建并返回一个与Connection相关的Command对象。
2.Connection对象的常用属性
ConnectionString:获取或者设置用于打开数据库的连接字符串。
ConnectionTimeout:在试图建立连接的过程中,获取在终止操作并产生错误之前等待的时间,也就是超时时间。
DataBase:取得在数据库服务器上要打开的数据库名。
DataSource:取得要连接的SQL Server实例的名称。
State:取得目前连接的状态。
3.Connection对象的构造函数与Connection对象的创建
Connection对象的创建是由其对应的构造函数构造完成的,但是,不同的数据提供者用不同的类及构造函数完成Connection对象的创建,在SQL Server数据提供者中用类SqlConnection的构造函数创建Connection对象,而在OLE DB数据提供者中用类OleDbConnection的构造函数创建Connection对象。
表1-6分别列出了SQL Server数据提供者中类SqlConnection的两个构造函数的原型及其功能。

表1-7分别型列出了OLE DB数据提供者中类OleDbConnection的两个构造函数的原型及其功能。

虽然两个类的构造函数的名称不同,但使用方法是一样的。
以下以SQL Server数据提供者为例来说明创建Connection对象的方法。
第一种方法:
利用SqlConnection类的构造函数SqlConnection()创建一个未初始化的SqlConnection对象,再用一个连接字符串初始化该对象。
SqlConnection conn= new SqlConnection();
在使用conn之前必须设置ConnectionString属性的值。
conn.ConnectionString="server=localhost;database=pubs;uid=sa;pwd=;";
第二种方法:
利用SqlConnection类的构造函数SqlConnection(string connectionString)创建一个SqlConnection对象,并为构造函数的参数指定一个连接字符串。
SqlConnection conn=new SqlConnection("server=localhost;database=pubs;uid=sa;pwd=;");
4.连接字符串
(1)连接到SQL Server数据库的连接字符串
要连接一个数据库,需要指明要连接的数据库的种类、数据库服务器名称、数据库名称、登录用户名称以及密码等信息,这些信息就是连接字符串。连接字符串可以在Connection对象的ConnectionString属性里指定。
(2)连接到Access 2000数据库的连接字符串
连接Access数据库机制与连接SQL Server的机制没太大的区别,只是要使用OLE DB数据提供者中的OleDbConnection类来定义Connection对象,且需要对连接字符串中的不同参数指定不同的值即可。
5.Connection对象的打开和关闭
创建一个Connection对象并指定一个连接字符串并没有打开一个指向数据库的物理连接,需要调用对象的Open方法来打开连接。
Close方法用来关闭Connection对象。不关闭打开的连接会影响系统性能和对应用程序的操作,所以最好关闭连接。SqlConnection和OleDbConnection类提供Open和Close方法。



