一步步写自己SqlHelper类库(三):连接字符串

1.连接字符串定义
  我们已经知道,ADO.NET类库为不同的外部数据源提供了一致的访问。这些数据源可以是本地的数据文件(如excel、txt、access,甚至是SQLite),也可以是远程的数据库服务器(如SQL Server、MySQL、DB2、Oracle等)。而我们可以选择一种既简单又容易操作的标识去连接不同的数据源,这时候连接字符串就起到了作用。
  连接字符串是标识ADO.NET用怎样的方式,连接哪个数据库的字符串。连接不同的数据库,连接字符串的格式是不同的。在创建数据库连接的时候需要提供正确的连接字符串才能顺利进行数据库访问。

2.连接字符串语法格式
 
 连接字符串的格式是使用分号分隔的键/值参数对列表: 

keyword1=value; keyword2=value

  关键字不区分大小写,并将忽略键/值对之间的空格。不过,根据数据源的不同,值可能是区分大小写的。任何包含分号、单引号或双引号的值必须用双引号引起来。

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

  部分资料参考可米小子写得很好的系列。

  3.1 SQL Server连接字符串

     SQL Server支持Windows身份验证模式和混合模式两种身份验证模式。两种身份验证模式区别:windows身份验证,不验证sa密码,如果windows登录密码不正确,无法访问SQL Server;混合模式既可以使用windows身份验证登录,也可以在远程使用sa密码登录。在这两种情况下,连接字符串也是有区别的。

     (1)Windows身份验证模式下的连接字符串:  

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

      说明:

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

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

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

       (2)混合模式下的连接字符串   

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

      说明:

      Data Source:同上所述。

      Initial Catalog:同上所述。

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

      Password:数据库服务器密码。

     (3)一般在VS的环境下,通过添加数据库连接,会自动生成连接字符串,右击属性即可查到。

 

  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.构造连接字符串

  4.1 连接字符串本质也是一个字符串

string connStr = "Data Source=myServerAddress;Initial Catalog=Database.mdf;Integrated Security=True;User Instance=True";

 

  4.2 使用ADO.NET提供的DbConnectionStringBuilder类来构造连接字符串

    以SQL server为例子(需引入using System.Data.SqlClient;),SqlConnectionStringBuilder类继承与DbConnectionStringBuilder类

SqlConnectionStringBuilder build = new SqlConnectionStringBuilder();
build.DataSource = @"(local)\SQLEXPRESS";
build.InitialCatalog = "DataBase";
build.IntegratedSecurity = true;

    好处:使用动态字符串串联根据用户输入生成连接字符串时,可能发生连接字符串注入式攻击。 如果未验证字符串并且未转义恶意文本或字符,则攻击者可能会访问服务器上的敏感数据或其他资源。 例如,攻击者可以通过提供分号并追加其他值来发起攻击。 这样构造使连接字符串输入的值替换为合法的值。

 

5.连接字符串配置

  5.1 连接字符串本质是字符串,所以可以写在代码中的任意位置,当需要的时候直接引用,但这样不够方便,不利于维护,并且每次修改都需要重新编译代码,性能低,一般不采取。

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

    (1)webform为例:在web.config配置文件中的<configuration/>根节点下的</connectionStrings>添加连接字符串。  

   

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="false" targetFramework="4.0"/>
  </system.web>
  <connectionStrings>
    <add name="connstring" connectionString="Data Source=TERRYCHAN-PC\SQLEXPRESS;Initial Catalog=DBtest;Integrated Security=True"/>
  </connectionStrings>
</configuration>

 

     (2)winform为例:创建app.config配置文件,与web.config一样

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="connstring" connectionString="Data Source=TERRYCHAN-PC\SQLEXPRESS;Initial Catalog=DBtest;Integrated Security=True"/>
  </connectionStrings>
</configuration>

 

6.SqlHelper类

  本例使用webform,新建Datebase数据库,在web.config中配置好连接字符串,引入System.Configuration命名空间。

     

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

/// <summary>
///SqlHelper create by TerryChan 2012-04-17
/// </summary>
public class SqlHelper
{
    #region 字段
    /// <summary>
    /// 连接字符串
    /// </summary> 
    private readonly static string connectionString = ConfigurationManager.AppSettings["connstring"];
    #endregion
}

 

作者: ForEvErNoME
出处: http://www.cnblogs.com/ForEvErNoME/
欢迎转载或分享,但请务必声明文章出处。如果文章对您有帮助,希望你能 推荐关注
 
 

转载于:https://www.cnblogs.com/ForEvErNoME/archive/2012/04/19/2454092.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值