aspnet连接sqlserver数据库Word文档下载推荐.docx
- 文档编号:16445151
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:8
- 大小:20.58KB
aspnet连接sqlserver数据库Word文档下载推荐.docx
《aspnet连接sqlserver数据库Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《aspnet连接sqlserver数据库Word文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。
State其返回类型为ConnectionState,取得当前的连接状态:
Broken、Closed、Connecting、Fetching或Open。
ServerVersion其返回类型为string,获取包含客户端连接的SQLServer实例的版本的字符串。
PacketSize获取用来与SQLServer的实例通信的网络数据包的大小(以字节为单位)。
这个属性只适用于SqlConnection类型
SqlConnection方法:
方法说明Close()其返回类型为void,关闭与数据库的连接。
CreateCommand()其返回类型为SqlCommand,创建并返回一个与SqlConnection关联的SqlCommand对象。
Open()其返回类型为void,用连接字符串属性指定的属性打开数据库连接
SqlConnection事件:
事件说明StateChange当事件状态更改时发生。
(从DbConnection继承。
)InfoMessage当SQLServer返回一个警告或信息性消息时发生。
提示:
可以用事件让一个对象以某种方式通知另一对象产生某些事情。
例如我们在Windows系统中选择“开始”菜单,一旦单击鼠标时,就发生了一个事件,通知操作系统将“开始”菜单显示出来。
使用SqlConnection对象连接SQLServer数据库 我们可以用SqlConnection()构造函数生成一个新的SqlConnection对象。
这个函数是重载的,即我们可以调用构造函数的不同版本。
SqlConnection()的构造函数如下表所示:
构造函数说明SqlConnection()初始化SqlConnection类的新实例。
SqlConnection(String)如果给定包含连接字符串的字符串,则初始化SqlConnection类的新实例。
程序代码说明:
在上述语法范例的程序代码中,我们通过使用“new“关键字生成了一个新的SqlConnection对象,并且将其命名为mySqlConnection。
现在我们就可以使用如下两种方式连接数据库,即采用集成的Windows验证和使用SqlServer身份验证进行数据库的登录。
集成的Windows身份验证语法范例stringconnectionString="
server=localhost;
database=Northwind;
integratedsecurity=SSPI"
;
在上述语法范例的程序代码中,我们设置了一个针对SqlServer数据库的连接字符串。
其中server表示运行SqlServer的计算机名,由于在本书中,ASP.NET程序和数据库系统是位于同一台计算机的,所以我们可以用localhost取代当前的计算机名。
database表示所使用的数据库名,这里设置为SqlServer自带的一个示例数据库--Northwind。
由于我们希望采用集成的Windows验证方式,所以设置integratedsecurity为SSPI即可。
SqlServer2005中的Windows身份验证模式如下:
在使用集成的Windows验证方式时,并不需要我们输入用户名和口令,而是把登录Windows时输入的用户名和口令传递到SqlServer。
然后SqlServer检查用户清单,检查其是否具有访问数据库的权限。
而且数据库连接字符串是不区分大小写的。
采用SqlServer身份验证的语法范例stringconnectionString="
server=YourServerName;
Database=YourDBName;
UID=YourSQLLoginID;
PWD=YourSQLLoginPassword;
"
如:
stringconnectionString="
uid=sa;
pwd=sa"
(或:
Datasource=YourServerName;
)
在上述语法范例的程序代码中,采用了使用已知的用户名和密码验证进行数据库的登录。
uid为指定的数据库用户名,pwd为指定的用户口令。
为了安全起见,一般不要在代码中包括用户名和口令,你可以采用前面的集成的Windows验证方式或者对Web.Config文件中的连接字符串加密的方式提高程序的安全性。
SqlServer2005中的SqlServer身份验证模式如下:
如果你使用其他的数据提供者的话,所产生的连接字符串也具有相类似的形式。
例如我们希望以OLEDB的方式连接到一个Oracle数据库,其连接字符串如下:
datasource=localhost;
initialcatalog=Sales;
useid=sa;
password=;
provider=MSDAORA"
在上述语法范例的程序代码中,通过专门针对Oracle数据库的OLEDB提供程序,实现数据库的连接。
datasource表示运行Oracle数据库的计算机名,initialcatalog表示所使用的数据库名。
provider表示使用的OLEDB提供程序为MSDAORA。
Access数据库的连接字符串的形式如下:
provider=Microsoft.Jet.OLEDB.4.0;
@”datasource=c:
\DataSource\Northwind.mdb”;
在上述语法范例的程序代码中,通过专门针对Access数据库的OLEDB提供程序,实现数据库的连接。
这使用的的OLEDB提供程序为Microsoft.Jet.OLEDB.4.0,并且数据库存放在c:
\DataSource目录下,其数据库文件为Northwind.mdb。
现在我们就可以将数据库连接字符串传人SqlConnection()构造函数,例如:
SqlConnectionmySqlConnection=newSqlConnection(connectionString);
或者写成SqlConnectionmySqlConnection=newSqlConnection(
);
在前面的范例中,通过使用“new“关键字生成了一个新的SqlConnection对象。
因此我们也可以设置该对象的ConnectionString属性,为其指定一个数据库连接字符串。
这和将数据库连接字符串传人SqlConnection()构造函数的功能是一样的。
SqlConnectionmySqlConnection=newSqlConnection();
mySqlConnection.ConnectionString="
只能在关闭Connection对象时设置ConnectionString属性。
打开和关闭数据库连接 生成Connection对象并将其设置ConnectionString属性设置为数据库连接的相应细节之后,就可以打开数据库连接。
为此可以调用Connection对象的Open()方法。
其方法如下:
mySqlConnection.Open();
完成数据库的连接之后,我们可以调用Connection对象的Close()方法关闭数据库连接。
例如:
mySqlConnection.Close();
下面是一个显示如何用SqlConnection对象连接SqlServerNorthwind数据库的实例程序,并且显示该SqlConnection对象的一些属性。
范例程序代码如下:
01publicpartialclass_Default:
System.Web.UI.Page
02{
03protectedvoidPage_Load(objectsender,EventArgse)
04{
05//建立数据库连接字符串
06stringconnectionString="
07integratedsecurity=SSPI"
08//将连接字符串传入SqlConnection对象的构造函数中
09SqlConnectionmySqlConnection=newSqlConnection(connectionString);
10try
11{
12//打开连接
13mySqlConnection.Open();
14//利用label控件显示mySqlConnection对象的ConnectionString属性
15lblInfo.Text="
<b>mySqlConnection对象的ConnectionString属性为:
<b>"
+
16mySqlConnection.ConnectionString+"
<br>"
17lblInfo.Text+="
<b>mySqlConnection对象的ConnectionTimeout属性为<b>"
18mySqlConnection.ConnectionTimeout+"
19lblInfo.Text+="
<b>mySqlConnection对象的Database属性为<b>"
20mySqlConnection.Database+"
21lblInfo.Text+="
<b>mySqlConnection对象的DataSource属性为<b>"
22mySqlConnection.DataSource+"
23lblInfo.Text+="
<b>mySqlConnection对象的PacketSize属性为<b>"
24mySqlConnection.PacketSize+"
25lblInfo.Text+="
<b>mySqlConnection对象的ServerVersion属性为<b>"
26mySqlConnection.ServerVersion+"
27lblInfo.Text+="
<b>mySqlConnection对象的当前状态为<b>"
28mySqlConnection.State+"
29}
30catch(Exceptionerr)
31{
32lblInfo.Text="
读取数据库出错"
33lblInfo.Text+=err.Message;
34}
35finally
36{
37//关闭与数据库的连接
38mySqlConnection.Close();
39lblInfo.Text+="
<br><b>关闭连接后的mySqlConnection对象的状态为:
</b>"
40lblInfo.Text+=mySqlConnection.State.ToString();
41}
42}
43}
在上述范例的程序代码中,我们利用trycatchfinally对数据库连接进行异常处理。
当无法连接数据库时将抛出异常,并显示出错信息,见catch代码块所示。
在此程序中,无论是否发生异常,都可以通过finally区块关闭数据库的连接,从而节省计算机资源,提高了程序的效率和可扩展性。
执行结果:
当然,我们还可以采用一种更加简便的方法来实现上述程序的功能。
这就是将SqlConnection对象包含到using区块中,这样程序会自动调用Dispose()方法释放SqlConnection对象所占用的系统资源,无需再使用SqlConnection对象的Close()方法。
05stringconnectionString="
06integratedsecurity=SSPI"
07SqlConnectionmySqlConnection=newSqlConnection(connectionString);
08using(mySqlConnection)
09{
10mySqlConnection.Open();
11lblInfo.Text="
12mySqlConnection.ConnectionString+"
13lblInfo.Text+="
14mySqlConnection.ConnectionTimeout+"
15lblInfo.Text+="
16mySqlConnection.Database+"
18mySqlConnection.DataSource+"
20mySqlConnection.PacketSize+"
22mySqlConnection.ServerVersion+"
+
24mySqlConnection.State+"
25}
26lblInfo.Text+="
27lblInfo.Text+=mySqlConnection.State.ToString();
28}
在上述范例的程序代码中,采用using(mySqlConnection)的形式使得代码更加简洁,并且其最大的优点就是无需编写finally区块代码,可以自动关闭与数据库的连接。
连接池 打开与关闭数据库都是比较耗时的。
为此,ADO.NET自动将数据库连接存放在连接池中。
连接池可以大幅度提高程序的性能和效率,因为我们不必等待建立全新的数据库连接过程,而是直接利用现成的数据库连接。
注意,利用Close()方法关闭连接时,并不是实际关闭连接,而是将连接标为未用,放在连接池中,准备下一次复用。
如果在连接字符串中提供相同的细节,即相同的数据库,用户名,密码等等,则可以直接取得并返回池中的连接。
然后可以用这个连接访问数据库。
使用SqlConnection对象时,可以在连接字符串中指定maxpoolsize,表示连接池允许的最大连接数(默认为100),也可以指定minpoolsize表示连接池允许的最小连接数(默认为0)。
下面的代码指定了SqlConnection对象的maxpoolsize为10,minpoolsize为5。
SqlConnectionmySqlConnection=newSqlConnection("
integratedsecurity=SSPI;
+"
maxpoolsize=10;
minpoolsize=5"
在上述范例的程序代码中,程序最初在池中生成5个SqlConnection对象。
池中可以存储最多10个SqlConnection对象。
如果要打开新的SqlConnection对象时,池中的对象全部都在使用中,则请求要等待一个SqlConnection对象关闭,然后才可以使用新的SqlConnection对象。
如果请求等待时间超过ConnectionTimeout属性指定的秒数,则会抛出异常。
下面通过一个程序来显示连接池的性能优势。
在应用此程序过程我们要先引用System.Data.SqlClinet和System.Text命名空间。
05//设置连接池的最大连接数为5,最小为1
06SqlConnectionmySqlConnection=newSqlConnection(
07"
08"
maxpoolsize=5;
minpoolsize=1"
09//新建一个StringBuilder对象
10StringBuilderhtmStr=newStringBuilder("
11for(intcount=1;
count<=5;
count++)
12{
13//使用Append()方法追加字符串到StringBuilder对象的结尾处
14htmStr.Append("
连接对象"
+count);
15htmStr.Append("
16//设置一个连接的开始时间
17DateTimestart=DateTime.Now;
18mySqlConnection.Open();
19//连接所用的时间
20TimeSpantimeTaken=DateTime.Now-start;
21htmStr.Append("
连接时间为"
+timeTaken.Milliseconds+"
毫秒"
22htmStr.Append("
23htmStr.Append("
mySqlConnection对象的状态为"
+mySqlConnection.State);
24htmStr.Append("
25mySqlConnection.Close();
26}
27//将StringBuilder对象的包含的字符串在label控件中显示出来
28lblInfo.Text=htmStr.ToString();
30}
在上述范例的程序代码中,我们将在连接池中重复5次打开一个SqlConnection对象,DateTime.Now表示当前的时间。
timeTaken表示从连接开始到打开连接所用的时间间隔。
可以看出,打开第一个连接的时间比打开后续连接的时间要长,因为第一个连接要实际连接数据库。
被关闭之后,这个连接存放在连接池中。
再次打开连接时,只要从池中直接读取即可,速度非常快。
String对象是不可改变的。
每次使用System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。
在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵。
如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类。
例如,当在一个循环中将许多字符串连接在一起时,使用StringBuilder类可以提升性能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- aspnet 连接 sqlserver 数据库