前两段Cafe烦乱扯了一下ADO.NET的不少东西,这次,我们从ADO.NET最基本的对象Connection开始,深入品味ADO.NET。
当今许多编程是以数据库为中心的,而程序要与数据库交互,建立连接是第一步。没有数据库连接,对数据库的所有操作都只能是无稽之谈。那么,如何建立数据库连接呢?ADO.NET中,提供了SqlConnection类用于连接Microsoft SQL Server(下文简称MSSQL)数据库管理系统,提供了OracleConnection类用于连接Oracle数据库管理系统……下面以简单MSSQL示例来加以说明:
首先,要使用相应的类来建立连接对象。
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
一个语句完成连接对象的创建,很简单吧?呵呵,但光光建立Connection对象是不够的。因为您必须告诉程序连接到哪一个数据库、用户名是什么、密码是什么、安全性怎么处理等等。这一切,可以通过一个字符串来定义,它的名字叫做“连接字符串”——ConnectionString。
SqlConnection testConnection=new SqlConnection();
string testConnectionString="DataSource=(local); Initial Catalog=Test; Integrated Security=SSPI";
testConnection.ConnectionString=testConnectionString; //定义testConnection对象的ConnectionString属性
有了这个连接字符串,就可以写代码访问安装在本地的数据库Test了。我们用以下代码,来看看它是否能够正常连接上。
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
如果能够正常连接,则会在页面顶端显示“Successfully open a connection!”,否则,显示“Failed to open a connection!”。
Connection的使用就是这么简单。然而,最困扰新程序员的问题,大概就是ConnectionString的书写。为此,ADO.NET提供了一个SqlConnectionStringBuilder类,只要对它的属性进行合理的设置,就可以生成正确的连接字符串。下面,我们来看一个简单示例(以MSSQL为例)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
迄今为止,我们所做的事情都是把连接字符串写在代码里,其实,这不是一个好习惯。试想一下,如果数据库服务器进行了搬迁,那是不是每一个页面都需要进行一次修改?即使使用替换,我们能不能保证所有替换都正确进行,没有多换、没有漏换?呵呵,经验告诉我们,把它放到Web.config里去吧,这样,连接字符串只需要写一次,所有页面都从Web.config中读取此连接字符串,自然的,要修改数据库连接,也只需要改一处。
要达到这样的效果,首先,要配置web.config文件:
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
在页面中调用此连接字符串的方法也很简单,示例如下:
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
呵呵,本次Cafe我们使用了SqlConnection类生成了相应的Connection对象,使用了SqlConnectionBuilder类生成了连接字符串,还使用了configurationManager的ConnectionStrings[]属性,从web.config中把连接字符串引用到了ASP.NET程序中。下次,我们将进一步深入Connection类,看看,在它背后,到底隐藏着什么。
Little knowledge is dangerous.