本文将详细介绍如何使用connection对象连接数据库。对于不同的.net数据提供者,ado.net采用不同的connection对象连接数据库。这些connection对象为我们屏蔽了具体的实现细节,并提供了一种统一的实现方法。
connection类有四种:sqlconnection,oledbconnection,odbcconnection和oracleconnection。
sqlconnection类的对象连接sql
server数据库;oracleconnection 类的对象连接oracle数据库;
oledbconnection类的对象连接支持ole
db的数据库,如access;而odbcconnection类的对象连接任何支持odbc的数据库。与数据库的所有通讯最终都是通过connection对象来完成的。
sqlconnection类
connection 用于与数据库“对话”,并由特定提供程序的类(如
sqlconnection)表示。尽管sqlconnection类是针对sql
server的,但是这个类的许多属性、方法与事件和oledbconnection及odbcconnection等类相似。本章将重点讲解sqlconnection特定的属性与方法,其他的connection类你可以参考相应的帮助文档。
注意:使用不同的connection对象需要导入不同的命名空间。oledbconnection的命名空间为system.data.oledb。sqlconnection的命名空间为system.data.sqlclient。odbcconnection的命名空间为system.data.odbc。oracleconnection的命名空间为system.data.oracleclinet。
sqlconnection属性:
属性
说明
connectionstring
其返回类型为string,获取或设置用于打开 sql server 数据库的字符串。
connectiontimeout
其返回类型为int,获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。
database
其返回类型为string,获取当前数据库或连接打开后要使用的数据库的名称。
datasource
其返回类型为string,获取要连接的 sql server 实例的名称。
state
其返回类型为connectionstate,取得当前的连接状态:broken、closed、connecting、fetching或open。
serverversion
其返回类型为string,获取包含客户端连接的 sql server 实例的版本的字符串。
packetsize
获取用来与 sql server
的实例通信的网络数据包的大小(以字节为单位)。这个属性只适用于sqlconnection类型
sqlconnection方法:
方法
说明
close()
其返回类型为void,关闭与数据库的连接。
createcommand()
其返回类型为sqlcommand,创建并返回一个与 sqlconnection 关联的 sqlcommand 对象。
open()
其返回类型为void,用连接字符串属性指定的属性打开数据库连接
sqlconnection事件:
事件
说明
statechange
当事件状态更改时发生。 (从 dbconnection 继承。)
infomessage
当 sql server 返回一个警告或信息性消息时发生。
提示:可以用事件让一个对象以某种方式通知另一对象产生某些事情。例如我们在windows系统中选择“开始”菜单,一旦单击鼠标时,就发生了一个事件,通知操作系统将“开始”菜单显示出来。
使用sqlconnection对象连接sql
server数据库
我们可以用sqlconnection()构造函数生成一个新的sqlconnection对象。这个函数是重载的,即我们可以调用构造函数的不同版本。sqlconnection()的构造函数如下表所示:
构造函数
说明
sqlconnection ()
初始化 sqlconnection 类的新实例。
sqlconnection (string)
如果给定包含连接字符串的字符串,则初始化 sqlconnection 类的新实例。
程序代码说明:在上述语法范例的程序代码中,我们通过使用“new“关键字生成了一个新的sqlconnection对象,并且将其命名为mysqlconnection。
现在我们就可以使用如下两种方式连接数据库,即采用集成的windows验证和使用sql
server身份验证进行数据库的登录。
集成的windows身份验证语法范例
string
connectionstring="server=localhost;database=northwind;
integrated
security=sspi";
程序代码说明:在上述语法范例的程序代码中,我们设置了一个针对sql
server数据库的连接字符串。其中server表示运行sql
server的计算机名,由于在本书中,asp.net程序和数据库系统是位于同一台计算机的,所以我们可以用localhost取代当前的计算机名。database表示所使用的数据库名,这里设置为sql
server自带的一个示例数据库--northwind。由于我们希望采用集成的windows验证方式,所以设置 integrated
security为sspi即可。
sql server 2005中的windows身份验证模式如下:
注意:在使用集成的windows验证方式时,并不需要我们输入用户名和口令,而是把登录windows时输入的用户名和口令传递到sql
server。然后sql server检查用户清单,检查其是否具有访问数据库的权限。而且数据库连接字符串是不区分大小写的。
采用sql<