-
连接
SQL
Server
数据库
p>
本文将详细介绍如何使用
Connection
对象连接数据库。
对于不同的
.NET
数据提供者,
采用不同的
Conn
ection
对象连接数据库。这些
Connection
p>
对象为我们屏
蔽了具体的实现细节,并提供了一种统一的实现方法。
Connection
类有四种:
SqlConnection
,
OleDbConnection
,
Odbc
Connection
和
OracleConnection<
/p>
。
SqlC
onnection
类
的对象连接
SQ
L Server
数据库;
OracleConnection
类的对象
连接
Oracle
数据库;
OleDb
Connection
类的对象连接支
持
OLE DB
的数据库,
如
Acce
ss
;
而
OdbcConnectio
n
类的对
象连接任何支持
ODBC
p>
的数据库。
与数据库的所有通讯最终
都是通
过
Connection
对象来完成的。
SqlConnection
类
Connection
用于与数据
库“对话”
,并由特定提供程序的类
(如
SqlConnection
)
表
示。
尽管
SqlConnection
类是针对
Sql
Server
的,但
是这个类的许多属性、方法与事件和
OleDbConnection
< br>及
OdbcConnection
等类相似。本章将重点
讲解
SqlConnection
特定
的属性与方法,其他的
Connection
类你可以参考相应
的帮助文档。
注意:使用不同的<
/p>
Connection
对象需要导入不同的命名空间。
OleDbConnection
的命名空间为
<
/p>
。
SqlConnection
的命名空
间
为
ent
。
OdbcConnection
的命名空间为
< br>。
OracleConnection
的命名空间为
p>
Clinet
。
SqlConnection
属性:属性说
明
ConnectionString
其返回类型为
string,
获取或设置用于打开
SQL Server
数据库的字符串。
ConnectionTimeOut
其返回类
型为
int,
获取在尝试建立连接时终止尝试并生成错误之前所
等待的时间。
Database
其返回类型为
p>
string,
获取当前数据库
或连接打开
后要使用的数据库的名称。
DataSource
其返回类
p>
型为
string,
获取要连接的
SQL Server
实例的名称。
State
其
返回类型为
ConnectionState,
取得当前的连接状态:
Broken
、
Closed
、
Connecting
、
Fetching<
/p>
或
Open
。
S
erverVersion
其返
回类型为
string,
获取包含客户端连接的
SQL Server
实例的
版本的
字符串。
PacketSize
获取用来与
SQL Server
的实例通
信的网络数据包的大小(以字节为单位)
。这个属性只适用
于
SqlConnection
类型
SqlConnection
p>
方法:
方法说明
Close()
其返回类型为
void,
关闭与数据库的连接。<
/p>
CreateCommand()
其返回类型为
< br>SqlCommand,
创建并返回一个与
SqlConnection
关联的
SqlCommand
对象。
Ope
n()
其返回类型为
void,
用连接
字符串
属性指定的属性打开数据库连接
SqlConnection
p>
事件:事件说明
StateChange
当
事件状态
更改时发生。
(从
DbConnection <
/p>
继承。
)
InfoMessage
当
SQL Server
返回一个警告或信息性消息时发生。
提示:
可以用事件让一个对象以某种方式通知另一对象产生某些
事情。例如我们在
Windows
系统
中选择“开始”菜单,一旦
单击鼠标时,就发生了一个事件,通知操作系统将“开始”<
/p>
菜单显示出来。
使用
SqlConnection
对象连接
SQL Server
数据库
我们可以用
SqlConnecti
on()
构造函数生成一个新
的
Sql
Connection
对象。
这个函数是重载的,
即我们可以调用
构造函数的不同版本。
SqlCon
nection()
的构造函数如下表所
示:构造函数说明
p>
SqlConnection ()
初始化
SqlConnection
类
的新
实例。
SqlConnection (String)
如果给
定包含连接字符串的
字符串,则初始化
SqlConnection
类的新实例。
程序代
码说明:
在上述语法范例的程序代码中,
我们通过使用
“
new
“
关键字生成了一个新的
SqlConnection
对象,
p>
并且将其命名
为
mySqlConnect
ion
。
现在我们就可以使用如下两种方
式连接数据库,
即采用集成的<
/p>
Windows
验证和使用
Sql
Server
身份验证进行数据库的登录。
集成的
Windows
身份验证
语法范例
string
connectionString=
integrated
security=SSPI
程序
代码说明:在上述语法范例的程序代码中,我们设
置了一个针对
Sql Server
数据库的连接字符串。其中
server
表示运行
Sql Server
的计算
机名,由于在本书中,
程序和数据库系统是位于同一台计算机的
,所以我们可以用
localhost
取代当前的计算机名。<
/p>
database
表示所使用的数据
库名
,这里设置为
Sql Server
自带的一个示例数据库
p>
--Northwind
。由于我们希望采用集成的
Windows
验证方式,
所以设置
< br>
integrated security
为
SSPI
即可。
Sql Server
2005
中的
Windows
身份验证模式如下:
注意:在使用
集成的
Windows
验证方式时,
并不需要我们输入用户名
和口
令,而是把登录
Windows
时
输入的用户名和口令传递到
Sql
Server
。
然后
Sql Server
检查用户清单,
检查其是否具有访问
数据库的权限。而且数据
库连接字符串是不区分大小写的。
采用
Sql
Server
身份验证的语法范例
string
connectionString =
QLLoginID
;PWD=YourSQLLoginPassword;
如:
string
connectionString =
(或:
string
connectionString =
source=YourServerNam
e;Database=YourDBName;UID=YourS
QLLoginI
D;PWD=YourSQLLoginPassword;
)
程序代码说明:在上述语法范例的
程序代码中,采用了
使用已知的用户名和密码验证进行数据库的登录。
< br>uid
为指
定的数据库用户名,
pwd
为指定的用户口令。
为了安全起见,
一般不要在代码中包括用户名和口令,你可以采用前面的集
成的
Windows
验证方式或者对
文
件中的连接字
符串加密的方式提高程序的安全性。
Sql Server
2005
中
的
Sql
Server
身份验证模式如下:
如果你使用其他的数
据提供者的话,所产生的连接字符串也具有
相类似的形式。
例如我们希望以
OLE DB
< br>的方式连接到一个
Oracle
数据库,
其连接字符串如下:
string connectionString =
source=localhost;initial catalog=Sales;
use
id=sa;password=;provider=MSDAORA
程序代码说明:在上述语法范例的程序代码中,通过专
门针对
Oracle
数据库的
OLE DB
提供程序,
实现数据库的连
接。
data source
表示运行
Oracle
数据库的计算机名,
initial
catalog
表示所使用的数据库名。
provider
表示使用的
OLE DB
< br>提供程序为
MSDAORA
。
Access
数据库的连接字符串的
形式如下:
string connectionString
=
;
@”data source=c:
DataSource
p>
”;
程序代码说明:在上述语法范例的程序代码中,通过专
门针对
Access
数据库的
OLE DB
提供程序,
实现数据库的连
接。这使用的的
OLE DB
提供程序为
.4.0
,并且数据库存放在
c:DataSource
目
录下,其数据库文件为
。
现在我们就
可以将数据库连接字符串
传人
SqlConnection()
构造函数,例
如:
string connectionString =
SqlConnection
mySqlConnection = new
SqlConnection(connectionString);
或者写成
SqlConnection
mySqlConnection =new
SqlConnection(
在前面的
范例中,通过使用“
new
“关键字生成了一个
新的
SqlConnection
对象。因此我们也可
以设置该对象的
ConnectionString
属性,
p>
为其指定一个数据库连接字符串。
这
和将数
据库连接字符串传人
SqlConnection()
构造函数
的功能
是一样的。
SqlConnection
mySqlConnection = new
SqlConnection();
tionString =
注意:只能在关闭
Connecti
on
对象时设置
ConnectionString
属性。
打开和关闭数据库连接
生
成
Connection
对象并将其设置
ConnectionString
属性设置
为
数据库连接的相应细节之后,就可以打开数据库连接。为此
可
以调用
Connection
对象的
O
pen()
方法。其方法如下:
();
完成数据库的连接之后,
我们可以调用
Connection
对象
的
Close()
方法关闭数据库连接。例如
:
();
下面是一个显示如何用
SqlConnection
对象连接
Sql
Server Northwind
< br>数据库的实例程序,并且显示该
SqlConnection
对象的一些属性。
范例程序代码如下:
01
public partial class _Default :
02 {
03 protected void
Page_Load(object sender, EventArgs e)
04 {
05
//
建立数据库连接字符串
06
string connectionString =
07
integrated security=SSPI
08 //
将连接字符串传入
SqlConnection
对象的构造函
数中
09 SqlConnection
mySqlConnection = new
SqlConnection(connectionString);
10 try
11 {
12
//
打开连接
13 ();
14 //
利用
label
控件显示
mySqlConnection
对象的
ConnectionString
属性
15 =
<
b
>
mySqlConnection
对象的
ConnectionString
属性为:<
b
>
16 tionString +
<
br
>
p>
17 +=
<
b
>
mySqlConnection
对象的
< br>ConnectionTimeout
属性为<
b
>
18 tionTimeout +
p>
<
br
>
19 +=
<
b
>
mySqlConnection
对象的
Database
属
性为<
b
>
20 se +
<
br
>
21
+=
<
b
>
mySqlConnection
对象的
DataSource
属性为<
b
>
22 urce +
<
br
>
23 +=
<<
/p>
b
>
mySqlConnection<
/p>
对象的
PacketSize
属性为<<
/p>
b
>
24
Size +
<
br
>
25 +=
<
b
>
mySqlConnection
对象的<
/p>
ServerVersion
属性为<
b
>
26 Version +
<
br
>
27 +=
<
b
><
/p>
mySqlConnection
对象的当前状态为
<
b
>
28 +
<
br
>
29 }
30 catch
(Exception err)