出处:http://www.cnblogs.com/liuhaorain/archive/2012/02/12/2347914.html

摘要

ADO.NET强大的优势在于对不同的数据源提供一致的访问。在上一篇文章《你必须知道的ADO.NET(二)了解.NET数据提供程序》中,我们知道.NET对不同数据源,使用不同的数据提供程序,这使得我们可以更高效的访问相应的数据源。除了.NET数据提供程序外,我还得说说另外一位功臣:连接字符串(Connection
Strings),它也为ADO.NET在解决“不同”与“一致”的矛盾中,贡献出了非常重要的力量。


目录


1. 什么是连接字符串?

我们已经知道,ADO.NET类库为不同的外部数据源提供了一致的访问。这些数据源可以是本地的数据文件(如excel、txt、access,甚至是SQLite),也可以是远程的数据库服务器(如SQL Server、MySQL、DB2、Oracle等)。数据源似乎琳琅满目,鱼龙混杂。请试想一下,ADO.NET如何能够准确而又高效的访问到不同数据源呢?在上一篇《你必须知道的ADO.NET(二)了解.NET数据提供程序》中,你或许已经清楚,ADO.NET已经为不同的数据源编写了不同的数据提供程序。但是这个前提是,我们得访问到正确的数据源。否则的话,只会“张冠李戴,驴头不对马嘴”。就好比,我们用SQL
Server数据提供程序去处理excel数据源,结果肯定是让人“瞠目结舌”的。英雄总在最需要的时候出现,连接字符串,就是这样一组被格式化的键值对:它告诉ADO.NET数据源在哪里,需要什么样的数据格式,提供什么样的访问信任级别以及其他任何包括连接的相关信息。哦!如果你这样想的话,那么以后你使用连接字符串的时候,或许就不会小觑了吧!

2.理解语法格式

其实,连接字符串虽然影响深远,但是其本身的语法却是十分的简单。连接字符串由一组元素组成,一个元素包含一个键值对,元素之间由“;”分开。语法如下:

key1=value1;key2=value2;key3=value3...

典型的元素(键值对)应当包含这些信息:数据源是基于文件的还是基于网络的数据库服务器,是否需要账号密码来访问数据源,超时的限制是多少,以及其他相关的配置信息。我们知道,值(value)是根据键(key)来确定的,那么键(key)如何来确定呢?语法并没有规定键(key)是什么,这需要根据你需要连接的数据源来确定的。在下一节中,我将详细讲解几种常用的连接字符串。

提示:如果需要了解更多连接字符串的格式,可以参考 http://www.connectionstrings.com/

3.例举几种典型连接字符串

3.1 SQL Sever连接字符串

(1)标准的安全连接

Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;

说明:

Data Source:需要连接的服务器。需要注意的是,如果使用的时Express版本的SQL Server需要在服务器名后加\SQLEXPRESS。例如,连接本地的SQL Server 2008 Express版本的数据库服务器,可以写成Data Source = (local)\SQLEXPRESS或者.\SQLEXPRESS。

Initial Catalog:默认使用的数据库名称。

User ID:数据库服务器账号。

Password:数据库服务器密码。

或者也可以写成这样:

Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;

(2)可信连接

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

说明:

Data Source:与上述相同。

Initial Catalog:与上述相同。

Integrate Security:使用存在的windows安全证书访问数据库。

或者也可以写成这样:

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

3.2 Access连接字符串

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin;Password=;

3.3 MySQL连接字符串

Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

3.4 DB2连接字符串

Server=myAddress:myPortNumber;Database=myDataBase;UID=myUsername;PWD=myPassword;

3.5 Oracle连接字符串

Data Source=TORCL;User Id=myUsername;Password=myPassword;

4.如何构造连接字符串?

在上面我们知道,连接字符串本质上就是一个字符串,因此我们完全可以用

string connStr = "Data Source=myServerAddress;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword";

来构造一个连接字符串。实际上,ADO.NET有一个专门的类来处理连接字符串:DbConnectionStringBuilder。DbConnectionStringBuilder类为强类型连接字符串生成基类。之所以要有这样一个类,是因为它更加安全与友好。以SQL Server为例,可以这样构建一个连接字符串:

1 SqlClient.SqlConnectionStringBuilder builder =
2 new SqlClient.SqlConnectionStringBuilder();
3 builder.DataSource = @"(local)\SQLEXPRESS";
4 builder.InitialCatalog = "myDataBase";
5 builder.IntegratedSecurity = true;

5.在配置文件中存储连接字符串

在我们实际开发中,我们一般不会把连接字符串直接写在代码中,而是存储在配置文件里。把连接字符串写死在代码中,不便于维护,每次修改字符串时,还得重新编译代码。以ASP.NET应用程序为例,我们一般把连接字符串写在web.config配置文件的<connectionstrings />节点。例如:

1 <connectionStrings>
2 <add name="connStr" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=myDataBase;Integrated Security=SSPI" />
3 </connectionStrings>

因此,我们只需要在程序中添加相应代码来获取配置文件中的值,比如:

string connStr = ConfigurationManager.ConnectionStrings["connStr"].ToString(); 

当然,你可以在配置文件的<appsettings />节点下添加连接字符串,获取字符串值的方法类似。在下一篇文章中,我将讲解如何连接数据库,希望大家多多关注。

ADO.NET入门教程(三) 连接字符串,你小觑了吗?的更多相关文章

  1. RabbitMQ入门教程(三):Hello World

    原文:RabbitMQ入门教程(三):Hello World 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog. ...

  2. PySide——Python图形化界面入门教程(三)

    PySide——Python图形化界面入门教程(三) ——使用内建新号和槽 ——Using Built-In Signals and Slots 上一个教程中,我们学习了如何创建和建立交互widget ...

  3. Elasticsearch入门教程(三):Elasticsearch索引&映射

    原文:Elasticsearch入门教程(三):Elasticsearch索引&映射 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文 ...

  4. 无废话ExtJs 入门教程三[窗体:Window组件]

    无废话ExtJs 入门教程三[窗体:Window组件] extjs技术交流,欢迎加群(201926085) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3 ...

  5. JasperReports入门教程(三):Paramters,Fields和Detail基本组件介绍

    JasperReports入门教程(三):Paramter,Field和Detail基本组件介绍 前言 前两篇博客带领大家进行了入门,做出了第一个例子.也解决了中文打印的问题.大家跟着例子也做出了de ...

  6. MVC5 + EF6 完整入门教程三

    期待已久的EF终于来了. 学完本篇文章,你将会掌握基于EF数据模型的完整开发流程. 本次将会完成EF数据模型的搭建和使用. 基于这个模型,将之前的示例添加数据库查询验证功能. 文章提纲 概述 & ...

  7. MVC5 + EF6 完整入门教程三:EF来了

    期待已久的EF终于来了 学完本篇文章,你将会掌握基于EF数据模型的完整开发流程. 本次将会完成EF数据模型的搭建和使用. 基于这个模型,将之前的示例添加数据库查询验证功能. 文章提纲 概述 & ...

  8. ADO.NET入门教程(二)了解.NET数据提供程序

    出处:http://www.cnblogs.com/liuhaorain/archive/2012/02/11/2346312.html 1. 什么是.NET数据提供程序? .NET Framewor ...

  9. ADO.NET入门教程(五) 细说数据库连接池

    摘要 今天我要讲的是数据库连接池.说实话,我表示鸭梨很大.因为相比其他章节来说,连接池相对来说难理解一点.我要用最通俗的语句给大家讲明白,讲透彻却也不是一件很容易的事.但是,连接池又是非常重要的知识点 ...

随机推荐

  1. js学习笔记一类型、值和变量

    js的数据类型分为两类:原始类型和对象类型 原始类型包括数字.字符串和布尔值 js中有2个特殊的原始值:null(空)和undefined(未定义) 对象是属性的集合,每个属性都由名/值对组成 js的 ...

  2. objdump的使用方法和 symbol table的每列的含义

    一.objdump的用法 objdump命令的man手册 objdump     [-a] [-b bfname|     --target=bfdname] [-C] [--debugging]   ...

  3. WPF与DevExpress之旅-序言

    随着.NET技术的发展,从之前的WINFORM转向到WPF是我们技术改革的必然趋势.WPF能给人带来震撼的视觉体验,也能更加规范我们的开发模式,与传统的WINFORM开发来说具有革命性的意义.DevE ...

  4. 管理口令(P):[INS-30001] ADMIN口令为空之Oracle安装

    在安装oracle database11g 发行版的时候出现下面这个问题. 无论怎么输入密码都提示有问题,都输入得鬼火了!去百度了一下,果然有命名规则的 规则如下:小写字母+数字+大写字母

  5. 从零开始学ios开发(十八):Storyboards(下)

    这篇我们完成Storyboards的最后一个例子,之前的例子中没有view之间的切换,这篇加上这个功能,使Storyboards的功能完整呈现.在Storyboards中负责view切换的东西叫做“s ...

  6. macos port总结

    http://stackoverflow.com/questions/733951/unable-to-download-the-source-code-of-open-source-projects ...

  7. Express/Koa/Hapi

    Express/Koa/Hapi 本文翻译自: https://www.airpair.com/node.js/posts/nodejs-framework-comparison-express-ko ...

  8. Opencv图像与矩阵的操作

    #include "stdafx.h" #include <cv.h> #include <cxcore.h> #include <highgui.h ...

  9. android退出登陆后,清空之前所有的activity,进入登陆主界面

    如题: android退出登陆后,清空之前所有的activity,进入登陆主界面 在退出登陆时只需要增加一个intent标志 Intent intent_login = new Intent(); i ...

  10. FineUI Grid控件右键菜单的实现

    FineUI官方Demo上一直没有Grid右键菜单的实现,其实从4.1.x的版本开始,允许添加自定义的事件监听(Listeners),所以要实现这个功能已经相当容易了. ExtJs右键菜单有很多种,对 ...