数据库连接字符串


  Fireasy 提供了一个 ConnectionString 类来存放连接字符串,它可以和 System.String 进行显式和隐式转换。

  各种数据库的连接串你可以去查阅网上的资料。

  ConnectionString 的常用属性如下:


1、IsTracking 属性

  你可以在连接字符串里使用 IsTracking=true 来开启 SQL 跟踪,这是一个 Fireasy 特有的属性,它不会提供给 DbConnection 初始化。如:

Data Source=localhost;database=northwind;User Id=root;password=faib;pooling=true;charset=utf8;tracking=true

  开启 IsTracking 后,执行的 SQL 将在应用程序目录下的 __dbtrack 目录下生成跟踪日志,你可以自己去实现 ICommandTracker 然后通过 IOC 配置去替换掉默认的日志输出。


2、Properties 属性

  这是一个类似字典的 ConnectionProperties 对象,用于存放连接字符串中的 Key-Value,除了使用索引器取值外,还可以使用 TryGetValue 或 TryGetValueWithDefaultValue 方法进行取值,它们都支持使用多个 Key 进行匹配,比如用户ID,连接串里有可能是 userid、user id 或 user,此时就可以使用 TryGetValue 方法进行匹配。如下所示:

[TestMethod]
public void TestGetConnectionStringProperty()
{
    var constr = (ConnectionString)"Data Source=localhost;database=northwind;User Id=root;password=faib;";
    var userId = constr.Properties.TryGetValue("userid", "user id", "user");
    Assert.AreEqual("root", userId);
}

  通过 TrySetValue 方法可以动态改变连接字符串中的值,然后调用 Update 方法更新到连接字符串中,如下所示,动态将数据库改成了 samples:

[TestMethod]
public void TestSetConnectionStringProperty()
{
    var constr = (ConnectionString)"Data Source=localhost;database=northwind;User Id=root;password=faib;";
    constr.Properties.TrySetValue("samples", "database").Update();
}

💡 关于路径定位符

  连接字符串里可以使用 |appdir||datadirectory| 表示当前程序所在的目录,再使用 ../ 等进行相对定位。如 |appdir|../db/test.mdb。

  还可以使用 Environment.SpecialFolder 枚举进行定位。如 |desktop| 表示桌面、|system| 表示系统目录等等,具体可参考其枚举值。


3、分布式数据库连接字符串

  DistributedConnectionString 类继承自 ConnectionString 类,并增加了 DistributedMode 属性,以便区分是 Master 还是 Slave。