aspnet连接sqlserver数据库Word文档下载推荐.docx

上传人:b****4 文档编号:16445151 上传时间:2022-11-23 格式:DOCX 页数:8 大小:20.58KB
下载 相关 举报
aspnet连接sqlserver数据库Word文档下载推荐.docx_第1页
第1页 / 共8页
aspnet连接sqlserver数据库Word文档下载推荐.docx_第2页
第2页 / 共8页
aspnet连接sqlserver数据库Word文档下载推荐.docx_第3页
第3页 / 共8页
aspnet连接sqlserver数据库Word文档下载推荐.docx_第4页
第4页 / 共8页
aspnet连接sqlserver数据库Word文档下载推荐.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

aspnet连接sqlserver数据库Word文档下载推荐.docx

《aspnet连接sqlserver数据库Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《aspnet连接sqlserver数据库Word文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。

aspnet连接sqlserver数据库Word文档下载推荐.docx

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类可以提升性能

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1