手机版

ASP .网络2.0服务器数据库连接详解

时间:2021-11-25 来源:互联网 编辑:宝哥软件园 浏览:

有四个连接类:SqlConnection、OleDbConnection、OdbcConnection和OracleConnection。SqlConnection类的一个对象连接到一个SQL Server数据库;OracleConnection类的一个对象连接到一个Oracle数据库;OleDbConnection类的对象连接到支持OLE DB的数据库,如Access;OdbcConnection类的对象连接到任何支持ODBC的数据库。与数据库的所有通信最终都是通过Connection对象完成的。SqlConnection类连接用于与数据库“对话”,由特定提供程序的类表示,如SqlConnection。虽然SqlConnection类是针对Sql Server的,但该类的许多属性、方法和事件类似于OleDbConnection和OdbcConnection等类。本章将重点介绍SqlConnection的具体属性和方法,您可以参考其他Connection类的相应帮助文档。注意:使用不同的连接对象需要导入不同的命名空间。OleDbConnection的命名空间是系统。数据. OleDb.SqlConnection的命名空间是系统。数据SqlClient。OdbcConnection的命名空间是系统。数据. Odbc.OracleConnection的命名空间是系统。数据. OracleClinet.SqlConnection属性:属性描述ConnectionString,其返回类型为String,获取或设置用于打开SQL Server数据库的字符串。ConnectionTimeOut的返回类型是int,它获取在尝试建立连接时终止尝试并生成错误之前等待的时间。数据库的返回类型是字符串,它获取当前数据库或连接打开后要使用的数据库的名称。数据源的返回类型是字符串,它获取要连接的SQL Server实例的名称。状态的返回类型是ConnectionState,它获取当前的连接状态:断开、关闭、连接、获取或打开。返回类型为字符串的服务器获取包含客户端所连接的SQL Server实例的服务器版本的字符串。数据包大小获取用于与SQL Server实例通信的网络数据包的大小(以字节为单位)。此属性仅适用于SqlConnection类型的SqlConnection方法:返回类型为void的方法描述Close()关闭与数据库的连接。CreateCommand(),其返回类型为SqlCommand,创建并返回与SqlConnection关联的SqlCommand对象。Open(),其返回类型为void,使用连接字符串属性指定的属性打开数据库连接。SqlConnection事件:事件描述状态更改发生在事件状态更改时。(从DbConnection继承。)当SQL Server返回警告或信息性消息时,会出现信息性消息。提示:您可以使用事件让一个对象以某种方式通知另一个对象有事情正在发生。例如,当我们在Windows系统中选择“开始”菜单时,一旦我们单击鼠标,就会发生一个事件,通知操作系统显示“开始”菜单。使用SqlConnection对象连接到SQL Server数据库。我们可以使用SqlConnection()构造函数生成一个新的SqlConnection对象。这个函数是重载的,也就是说我们可以调用不同版本的构造函数。SqlConnection()的构造函数如下表所示:构造函数描述SqlConnection()初始化SqlConnection类的新实例。如果给定了包含连接字符串的字符串,则初始化SqlConnection类的新实例。假设我们导入了系统。Data.SqlClient命名空间,我们可以使用以下语句生成一个新的SqlConnection对象:SqlConnection MySQL connection=new SqlConnection();代码描述:在上述语法示例的程序代码中,我们使用关键字“new”生成了一个新的SqlConnection对象,并将其命名为mySqlConnection。现在我们可以使用以下两种方式连接数据库,即使用集成的Windows身份验证和使用Sql Server身份验证登录数据库。集成的Windows身份验证语法示例字符串connectionstring=' server=localhost;数据库=Northwind综合安全=SSPI ';代码描述:在上面语法示例的程序代码中,我们为Sql Server数据库设置了一个连接字符串。

服务器是运行Sql Server的计算机的名称。由于在本书中,ASP.NET程序和数据库系统位于同一台计算机上,我们可以用localhost替换当前的计算机名。Database表示所使用的数据库的名称,它被设置为Sql Server - Northwind的示例数据库。由于我们想采用集成的Windows身份验证方法,因此可以将集成安全性设置为SSPI。Sql Server 2005中的Windows身份验证模式如下:

注意:当使用集成的Windows身份验证方法时,我们不需要输入用户名和密码,而是将登录Windows时输入的用户名和密码传递给Sql Server。然后,Sql Server检查用户列表,看他们是否有权访问数据库。数据库连接字符串不区分大小写。Sql Server身份验证字符串connection string=' Server=localhost的语法示例;数据库=Northwinduid=sapwd=sa ';程序代码描述:在上述语法示例的程序代码中,数据库登录使用已知的用户名和密码验证。Uid是指定的数据库用户名,pwd是指定的用户密码。为了安全起见,一般不要在代码中包含用户名和密码。您可以使用集成的Windows身份验证方法或加密网站中的连接字符串。以提高程序的安全性。Sql Server 2005中Sql Server的身份验证模式如下:

如果使用其他数据提供程序,则生成的连接字符串具有类似的形式。例如,我们希望以OLE DB模式连接到一个Oracle数据库,其连接字符串如下:String ConnectionString=' data source=localhost;初始目录=销售额;使用id=sa密码=;provider=MSDAORA ';代码描述:在上述语法示例的程序代码中,数据库连接是通过专门为Oracle数据库设计的OLE DB提供程序实现的。数据源表示运行Oracle数据库的计算机的名称,初始目录表示使用的数据库的名称。该提供程序指示使用的OLE数据库提供程序是MSDAORA。Access数据库连接字符串的形式如下:字符串connectionstring=' provider=Microsoft . jet . oledb . 4.0;@”数据源=c : \ data source \ north wind . MDB”;代码描述:在上述语法示例的程序代码中,数据库连接是通过专门为Access数据库提供的OLE DB提供程序实现的。这里使用的OLE DB提供程序是微软。Jet.OLEDB.4.0,数据库存储在c:\DataSource目录下,其数据库文件为Northwind.mdb现在我们可以将数据库连接字符串传递给SqlConnection()构造函数,例如:string connectionstring=' server=localhost;数据库=Northwinduid=sapwd=sa ';SqlConnection MySQL connection=new SqlConnection(连接字符串);或者写入sqlconnection MySQL connection=new sqlconnection(' server=localhost;数据库=Northwinduid=sapwd=sa’;在前面的示例中,使用“new”关键字生成了一个新的SqlConnection对象。因此,我们还可以设置对象的ConnectionString属性,并为其指定一个数据库连接字符串。这与将数据库连接字符串传递给SqlConnection()构造函数的功能相同。SqlConnection MySQL connection=new SqlConnection();mySqlConnection。connectionStrIng=' server=localhost;数据库=Northwinduid=sapwd=sa ';注意:Connectionstring属性只能在连接对象关闭时设置。打开和关闭数据库连接以生成连接对象,并将其ConnectionString属性设置为数据库连接的相应详细信息。为此,可以调用Connection对象的Open()方法。方法如下:mySqlConnection。open();完成数据库连接后,我们可以调用连接对象的Close()方法来关闭数据库连接。示例:mySqlConnection。close();下面是一个示例程序,展示了如何将Sql Server北风数据库与SqlConnection对象连接起来,并展示了该SqlConnection对象的一些属性。

范例程序代码如下:01公共分部类_默认:系统网络。用户界面,第02页{03受保护的无效页面_加载(对象发送方,EventArgs e)04 {05 //建立数据库连接字符串06字符串connectionStrIng=' server=localhost;数据库=Northwind07综合安全=SSPI ';08 //将连接字符串传入SqlConnection对象的构造函数中09 SqlConnection MySQL连接=新的SqlConnection(connectionString);10 try11 {12 //打开连接13 mySqlConnection .open();14 //利用标签控件显示mySqlConnection对象的ConnectionString属性15黎巴嫩镑.关系型数据库连接对象的ConnectionString属性为:' 16 mySqlConnection .ConnectionString ' ”;21 lblInfo .关系型数据库连接对象的数据源属性为22 mySqlConnection .数据源“
”;23 lblInfo .关系型数据库连接对象的包装尺寸属性为24 mySqlConnection .PacketSize ' ”;27 lblInfo .关系型数据库连接对象的当前状态为28 mySqlConnection .声明“
”;29 }30捕获(异常错误)31 {32 lblInfo .文本='读取数据库出错;33 lblInfo .文本=错误。消息;34 }35最后36 {37 //关闭与数据库的连接38 mySqlConnection .close();39 lblInfo .文本关闭连接后的mySqlConnection对象的状态为:';40磅.文本=mySqlConnection .国家。ToString();41 }42 }43 }程序代码说明:在上述范例的程序代码中,我们利用最后试着接住对数据库连接进行异常处理。当无法连接数据库时将抛出异常,并显示出错信息,见捕捉代码块所示。在此程序中,无论是否发生异常,都可以通过最后区块关闭数据库的连接,从而节省计算机资源,提高了程序的效率和可扩展性。执行结果

当然,我们也可以用更简单的方法来实现上述程序的功能。也就是说,SqlConnection对象包含在使用块中,这样程序将自动调用Dispose()方法来释放SqlConnection对象占用的系统资源,而不使用SqlConnection对象的Close()方法。示例代码如下:01 public partial class _ default : system。web . ui . page 02 { 03 protected void page _ load(对象发送方,eventargse)04 { 05 string connection string=' server=localhost;数据库=Northwind06综合安全=SSPI ';07 SqlConnection MySQL connection=new SqlConnection(connectionString);08使用(MySQL Connection)09 { 10 MySQL Connection。open();1 lblinfo . text=' b ' MySQL connection对象的ConnectionString属性为: ' 12 MySQL connection . ConnectionString '
';13lblinfo . text=' ' MySQL connection对象的ConnectionTimeout属性是' 14 MySQL connection . connection time out '
';mysqlconnection对象的数据库属性是“16 mysqlconnection.database ”;17 lblinfo . text=' ' MySQL connection对象的DataSource属性是' 18 MySQL connection . data source '
';19lblinfo . text=' MySQL connection对象的PacketSize属性为' 20m ysql connection . packet size '
';21 blinfo . text=' ' MySQL connection对象的ServerVersion属性是' 22 MySQL connection . server version '
';23lbinfo . text=' b ' MySQL connection对象的当前状态是' 24 MySQL connection . state '
';25} 26 lblinfo.text='关闭连接后mySqlConnection对象的状态为:';27 lblInfo。Text=mySqlConnection。state . ToString();28 }29}程序代码说明:在上述示例的程序代码中,使用(mySqlConnection)使代码更加简洁,其最大的优点是可以自动关闭与数据库的连接,而无需编写finally block代码。通过连接池打开和关闭数据库非常耗时。因此,ADO.NET会自动将数据库连接存储在连接池中。连接池可以大大提高程序的性能和效率,因为我们不必等待新数据库连接的建立过程,而是直接使用现有的数据库连接。请注意,当使用Close()方法关闭连接时,实际上并不是关闭连接,而是将连接标记为未使用,并将其放入连接池中,为下一次重用做准备。如果您在连接字符串中提供相同的详细信息,即相同的数据库、用户名、密码等。可以直接获取并返回池中的连接。然后,您可以使用此连接来访问数据库。使用SqlConnection对象时,可以在连接字符串中指定最大池大小,这意味着连接池允许的最大连接数(默认值为100),也可以指定最小池大小,这意味着连接池允许的最小连接数(默认值为0)。下面的代码指定SqlConnection对象的最大池大小为10,最小池大小为5。SqlConnection MySQL connection=new SqlConnection(' server=localhost;数据库=Northwind综合安全=SSPI最大池大小=10;最小池大小=5’;程序代码描述:在上例的程序代码中,程序最初在池中生成5个SqlConnection对象。一个池最多可以存储10个SqlConnection对象。如果要打开新的SqlConnection对象时池中的所有对象都在使用,则需要等待一个SqlConnection对象关闭,然后才能使用新的SqlConnection对象。如果请求等待的时间超过ConnectionTimeout属性指定的秒数,将引发异常。下面的程序展示了连接池的性能优势。在应用这个程序的过程中,我们应该首先参考系统。数据队列和系统。文本命名空间。

示例程序代码如下:01 public partial class _ default : system。web . ui . page 02 { 03 protected void page _ load(对象发送方,event args e)04 { 05//将连接池的最大连接数设置为5。最小值为106 sqlconnection MySQL connection=new sqlconnection(07 ' server=localhost;数据库=Northwind综合安全=SSPI08 '最大池大小=5;最小池大小=1’;09 //创建新的StringBuilder对象10StringBuilder htmstr=new StringBuilder(' ' ');11表示(int count=1;计数<=5;12 { 13//使用Append()方法将字符串追加到StringBuilder对象14 htmStr的末尾。追加('连接对象'计数);15 htmStr。追加('
');16 //设置连接的开始时间17 DateTime start=DateTime。现在;18 mySqlConnection。open();19 //连接时间20 timespan timetaken=datetime。现在-开始;21 htmStr。追加('连接时间是' timeTaken。毫秒’);22 htmStr。追加('
');23 htmstr . append(' mysqlconnection对象的状态是' MySQL connection。国家);24 htmStr。追加('
');25 mySqlConnection。close();26 }27 //在标签控件28 lblInfo中显示StringBuilder对象中包含的字符串。Text=htmStr。ToString();29 }30}程序代码描述:在上面例子的程序代码中,我们将在连接池中打开一个SqlConnection对象五次,并且是DateTime。现在代表当前时间。TimeTaken表示从连接开始到连接打开的时间间隔。可以看出,打开第一个连接比打开后续连接需要更长的时间,因为第一个连接实际上连接到了数据库。关闭后,此连接存储在连接池中。当您再次打开连接时,您只需要直接从池中读取它,这非常快。提示:字符串对象是不可变的。每次使用系统中的一种方法时。字符串类,您需要在内存中创建新的字符串对象,因此您需要为这个新对象分配新空间。在重复修改字符串的情况下,与创建新字符串对象相关的系统开销可能非常昂贵。您可以使用系统。如果您想在不创建新对象的情况下修改字符串,请使用Text.StringBuilder类。例如,当许多字符串在一个循环中连接在一起时,使用StringBuilder类可以提高性能。Append方法可用于将文本或对象的字符串表示形式添加到由当前StringBuilder对象表示的字符串的末尾。实施结果:

在ASP.NET 2.0中设置连接字符串在ASP.NET 2.0中,使用了一种新的声明性表达式语法,该语法在运行时解析为连接字符串的值,并通过名称引用数据库连接字符串。连接字符串本身存储在Web.config文件中的<配置部分下,因此可以在一个位置轻松维护应用程序中所有页面的连接字符串。示例程序代码如下:<?xml版本='1.0 '?> <配置> <连接字符串> <添加名称=' Pubs ' connectionString=' Server=localhost;集成安全性=真;数据库=酒馆;持久安全信息=真“提供者名称=”系统。data . SqlClient '/> 程序代码:在上例的程序代码中,我们在Web中的配置节点下设置了两个数据库连接字符串。该文件分别指向两个示例数据库pubs和Northwind。请注意,数据源控件(如SqlDataSource控件)是在2.0中引入的。我们可以将SqlDataSource控件的ConnectionString属性设置为表达式<% $ connectionstrings : pubs% >,该表达式在运行时由ASP.NET分析器解析为连接字符串。还可以为SqlDataSource的ProviderName属性指定表达式,例如<% $ connectionstrings : PBS . ProviderName % >。它的具体用法和新特性将在后面的章节中详细介绍。现在你可以有一个基本的了解了。当然,我们也可以通过以下方式直接从配置文件中读取数据库连接字符串。首先,我们需要参考使用系统。配置命名空间,包含用于设置ASP.NET配置的类。字符串连接字符串=配置管理器。连接字符串['北风']。ConnectionString代码描述:在上面例子的程序代码中,我们可以使用ConnectionStrings['Northwind']来读取对应的Northwind字符串。同样,ConnectionStrings['Pubs']可以用来读取相应的Pubs字符串。

版权声明:ASP .网络2.0服务器数据库连接详解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。