前两段Cafe烦乱扯了一下ADO.NET的不少东西,这次,我们从ADO.NET最基本的对象Connection开始,深入品味ADO.NET。
当今许多编程是以数据库为中心的,而程序要与数据库交互,建立连接是第一步。没有数据库连接,对数据库的所有操作都只能是无稽之谈。那么,如何建立数据库连接呢?ADO.NET中,提供了SqlConnection类用于连接Microsoft SQL Server(下文简称MSSQL)数据库管理系统,提供了OracleConnection类用于连接Oracle数据库管理系统……下面以简单MSSQL示例来加以说明:
首先,要使用相应的类来建立连接对象。
SqlConnection testConnection=new SqlConnection();
一个语句完成连接对象的创建,很简单吧?呵呵,但光光建立Connection对象是不够的。因为您必须告诉程序连接到哪一个数据库、用户名是什么、密码是什么、安全性怎么处理等等。这一切,可以通过一个字符串来定义,它的名字叫做“连接字符串”——ConnectionString。
SqlConnection testConnection=new SqlConnection();
string testConnectionString="DataSource=(local); Initial Catalog=Test; Integrated Security=SSPI";
testConnection.ConnectionString=testConnectionString; //定义testConnection对象的ConnectionString属性
有了这个连接字符串,就可以写代码访问安装在本地的数据库Test了。我们用以下代码,来看看它是否能够正常连接上。
try
{
testConnection.Open();
if(testConnection.State==ConnectionState.Open)
Response.Write("Successfully opened a connection!");
}
catch
{
if(testConnection.State!=ConnectionState.Open)
Response.Write("Failed to open a connection!");
}
finally
{
if(testConnection.State==ConnectionState.Open)
testConnection.Close();
testConnection.Dispose();
}
如果能够正常连接,则会在页面顶端显示“Successfully open a connection!”,否则,显示“Failed to open a connection!”。
Connection的使用就是这么简单。然而,最困扰新程序员的问题,大概就是ConnectionString的书写。为此,ADO.NET提供了一个SqlConnectionStringBuilder类,只要对它的属性进行合理的设置,就可以生成正确的连接字符串。下面,我们来看一个简单示例(以MSSQL为例)
SqlConnectionStringBuilder connstrBuilder = new SqlConnectionStringBuilder();
connstrBuilder.DataSource="(local)";
connstrBuilder.InitialCatalog="Test";
connstrBuilder.IntegratedSecurity=true;
using(SqlConnection testConnection=new SqlConnection(connstrBuilder.ToString())
{
try
{
testConnection.Open();
if(testConnection.State==ConnectionState.Open)
Response.Write("Successfully opened a connection!");
}
catch
{
if(testConnection.State!=ConnectionState.Open)
Response.Write("Failed to open a connection!");
}
finally
{
if(testConnection.State==ConnectionState.Open)
testConnection.Close();
testConnection.Dispose();
}
}
迄今为止,我们所做的事情都是把连接字符串写在代码里,其实,这不是一个好习惯。试想一下,如果数据库服务器进行了搬迁,那是不是每一个页面都需要进行一次修改?即使使用替换,我们能不能保证所有替换都正确进行,没有多换、没有漏换?呵呵,经验告诉我们,把它放到Web.config里去吧,这样,连接字符串只需要写一次,所有页面都从Web.config中读取此连接字符串,自然的,要修改数据库连接,也只需要改一处。
要达到这样的效果,首先,要配置web.config文件:
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<connectionStrings>
<add name="testConnStr" providerName="System.Data.SqlClient" connectionString="DataSource=(local); Initial 
Catalog=Test; Integrated Security=SSPI"/>
</connectionStrings>
<system.web>

</system.web>
</configuration>

在页面中调用此连接字符串的方法也很简单,示例如下:
string testConnectionString=ConfigurationManager.ConnectionStrings["testConnStr"].ToString();
呵呵,本次Cafe我们使用了SqlConnection类生成了相应的Connection对象,使用了SqlConnectionBuilder类生成了连接字符串,还使用了configurationManager的ConnectionStrings[]属性,从web.config中把连接字符串引用到了ASP.NET程序中。下次,我们将进一步深入Connection类,看看,在它背后,到底隐藏着什么。
Little knowledge is dangerous.

浙公网安备 33010602011771号