使用的不连续组件。ADO.NET包含用于连接到数据库、执行命令和检索结果的.NETFramework数据提供程序。您可以直接处理检索到的结果,或将其放入ADO.NETDataSet对象,以便与来自多个源的数据或在层之间进行远程处理的数据组合在一起,以特殊方式向用户公开。ADO.NETDataSet对象也可以独立于.NETFramework数据提供程序使用,以管理应用程序本地的数据。
3.4.2ADO.NET访问数据的基本方法
ADO.NET结构如下:
图3-4
从图3-4可以看出,ADO.NET提供了两种访问数据的基本方法:通过DataReader和DataSet。下面分别讨论这两种方法:
1)DataReader:
ADO.NETDataReader从数据库中检索只读、只进的数据流。查询结果在查询执行时返回,在并存储在客户端的网络缓冲区中,直到您使用DataReader的Read方法对它们发出请求。使用DataReader可以提高应用程序的性能,因为一旦数据可用,DataReader方法就立即检索该数据,而不是等待返回查询的全部结果;并且在默认情况下,该方法一次只在内存中存储一行,从而降低了系统开销。
DataReader提供未缓冲的数据流,该数据流使过程逻辑可以有效地按顺序处理从数据源中返回的结果。由于数据不在内存中缓存,所以在检索大量数据时,DataReader是一种适合的选择。
2)DataSet
ADO.NETDataSet是数据的一种内存驻留表示形式,无论它包含的数据来自什么数据源,它都会提供一致的关系编程模型。一个DataSet表示整个数据集,其中包含对数据进行包含、排序和约束的表以及表间的关系。
如图3-4所示,一个DataSet可以包含多个DataTable,利用数据存储的信息对它们进行填充.可以在DataSet中包含DataRelation对象,DataRelation对象用来描述DataSet中表之间的关系。这个DataRelation对象的所包含的约束就是我们在3.14中所讲的数据库完整性设计的内容。
总之DataSet最大的特点就是:不依赖于连续的活动连接,其值是数据源的一个内存副本。
图3-5
图3-5描述了用DataSet操作SQLserver2000的一般方法。
用DataSet访问常规数据源的基本步骤是,先建立一个DataAdapter对象,如果只需只读访问数据,那么只要对DataAdapter指定一个SelectCommand即可。然后用DataAdapter填充DataSet。如果需要插入,更新或者删除数据,则需要在DataAdapter中相应的指定InsertCommand、UpdateCommand以及DeleteCommand,最后调用DataAdapter的Update方法。
3.4.3使用ADO.NET操作SQLserver2000
我的图书馆管理信息系统使用的是SQLserver2000数据库。
在阐述了一些ADO.NET的基本内容后,我们来有针对性的讲一下如何通过ADO.NET访问SQLserver2000数据库。
最新的.NETFramework1.1包括SQLServer.NETFramework数据提供程序(用于MicrosoftSQLServer7.0版或更高版本)、OLEDB.NETFramework数据提供程序和ODBC.NETFramework数据提供程序以及Oracle.NETFramework数据提供程序。分别可以建立四种不同连接,其主要功能如下。
(1)SqlConnection-该对象管理与SQLServer7.0版或更高版本的连接。通过忽略OLEDB层(还包括其他措施),对该对象进行优化以便将其用于SQLServer7.0或更高版本。
(2)OleDbConnection-该对象管理与可通过OLEDB访问的任何数据存储区的连接。
(3)OdbcConnection-该对象管理与通过使用连接字符串或ODBC数据源名称(DSN)创建的数据源的连接。
(4)OracleConnection-该对象管理与Oracle数据库的连接。
虽说SQLServer.NETFramework数据提供程序、OLEDB.NETFramework数据提供程序和ODBC.NETFramework数据提供程序都能访问SQLserver数据库,但微软公司推荐使用SQLServer.NETFramework数据提供程序
图书馆管理信息系统使用的就是SQLServer.NETFramework数据提供程序。以下通过一些例子介绍图书馆管理系统中是如何通过SQLServer.NETFramework数据提供程序与SQLserver2000数据库进行交互的。
在.net中使用SQLServer.NETFramework数据提供程序,首先要导入System.Data.SqlClient命名空间。我们举例说明ADO.NET与SQLserver2000数据库交互的两种常见方式:A.直接使用数据命令;B.使用数据集。
A.使用数据命令与数据库交互
要在数据库中执行操作,应执行SQL语句或存储过程(它包括SQL语句)。您使用SQL语句或存储过程读写行并执行聚合函数,例如添加或求平均值。您还使用SQL语句或存储过程创建或修改表或列、执行事务等。
以下是一个图书馆管理系统中一个验证登陆的函数
PublicFunctionvalidateLogin(ByValuidAsString,ByValpwdAsString)AsBoolean
DimIsCorrectAsBoolean=False
DimcnmyAsNewSqlConnection("server=(local);database=lib2004;uid=sa;pwd=")
DimcmdAsNewSqlCommand
Withcmd
.Connection=cnmy
.CommandType=CommandType.Text
.CommandText="selectcount(*)frommanagerwhereMan_id=@Man_idand Man_pwd=@Man_pwd"
EndWith
DimmMan_idAsNewSqlParameter("@Man_id",SqlDbType.NVarChar,50)
DimmMan_pwdAsNewSqlParameter("@Man_pwd",SqlDbType.NVarChar,12)
Withcmd.Parameters
.Add(mMan_id)
.Add(mMan_pwd)
EndWith
mMan_id.Value=uid
mMan_pwd.Value=pwd
Try
cnmy.Open()
Ifcmd.ExecuteScalar=1Then
IsCorrect=True
EndIf
CatchexAsException
MessageBox.Show("登陆验证时数据库发生错误"+vbCrLf+ex.Message,_
"error",MessageBoxButtons.OK,MessageBoxIcon.Stop)
ReturnFalse
Finally
cnmy.Close()
IfNotcnmyIsNothingThen
cnmy.Dispose()
EndIf
EndTry
ReturnIsCorrect
EndFunction
现在对这个函数按步骤详细说明。
该例子体现了如何执行sql语句。
该实例用到了System.Data.SqlClient命名空间中两个重要的对象:1.连接对象SqlConnection;2.sql命令对象SqlCommand。
SqlConnection对象表示与SQLServer数据源的一个唯一的会话。对于客户端/服务器数据库系统,它相当于到服务器的网络连接。
其重要属性如下表:
ConnectionString
获取或设置用于打开SQLServer数据库的字符串。
ConnectionString格式如下:
使用sql验证方式:(server=服务器名称;database=数据库名称;uid=用户名;pwd=密码)
使用windows集成验证(server=服务器名称;database=数据库名称;IntegratedSecurity=SSPI)
SqlCommand对象表示要对SQLServer数据库执行的一个T-SQL语句或存储过程。其重要属性如下:
CommandText
获取或设置要对数据源执行的Transact-SQL语句或存储过程。
CommandTimeout
获取或设置在终止执行命令的尝试并生成错误之前的等待时间。
CommandType
获取或设置一个值,该值指示如何解释CommandText属性。
Connection
获取或设置SqlCommand的此实例使用的SqlConnection。
SqlCommand特别提供了以下对SQLServer数据库执行命令的方法:
ExecuteReader
执行返回行的命令。为了提高性能,ExecuteReader使用Transact-SQLsp_executesql系统存储过程调用命令。因此,如果用于执行像Transact-SQLSET语句这样的命令,ExecuteReader可能无法获得预期效果。
ExecuteNonQuery
执行T-SQLINSERT、DELELE、UPDATE及SET语句等命令。
ExecuteScalar
从数据库中检索单个值(例如一个聚合值)。
ExecuteXmlReader
将CommandText发送到Connection生成一个XmlReader对象。
直接使用数据命令的基本步骤是:
(1)新建一个SqlConnection对象,设置其ConnectionS
上一篇:
ASP_net仪器设备管理系统设计与实现(论文和程序)
下一篇:
试析影响公路路面平整度的因素及应采取的施工措施