【问题标题】:Why do we need connection strings?为什么我们需要连接字符串?
【发布时间】:2012-01-03 22:10:26
【问题描述】:

当我们连接到 ASP.NET 中的数据库时,您必须指定适当的连接字符串。然而,大多数其他要指定数据的实例都是在对象内完成的。

例如为什么我们不能有 连接对象 例如:

var connection = new connectionObject(){
   DataSource = "myServerAddress",
   IntialCatalog = "myDataBase",
   UserId = "myUsername",
   Password = "myPassword"
}

这比一些键/值字符串要好得多:

数据源=myServerAddress;初始 目录=myDataBase;UserId=myUsername;Password=myPassword;

我能想到的唯一原因是允许在 web.config 中存储,但无论如何都不会阻止我们在其中存储单个值。

我确信有充分的理由,但它们是什么?

【问题讨论】:

  • 连接字符串诞生时,OOP 并不真正可用,我认为 :-)
  • 您可以玩得开心,制作自己的连接对象类,其ToString() 将使用其属性构建适当的连接字符串。
  • 旧版。但我想没有什么能阻止你创建一个带有属性的连接字符串格式化程序类。
  • @BoltClock, +Vlad: DbConnectionBuilder 似乎与您所描述的差不多。不过,它是名称/值对而不是预定义的属性。
  • 对于提供者连接字符串,您可以使用提供者特定版本的 DbConnectionBuilder。例如。 SqlConnectionBuilder 公开已知 SQL Server 键/值对的强类型属性。

标签: c# .net vb.net database-connection connection-string


【解决方案1】:

我确定这只是历史。连接字符串至少可以追溯到 ADODB,例如在经典 Visual Basic 中使用的。这可以追溯到 ODBC,这可能就是这个想法的来源。我们在这里不是在谈论 .NET。我们正在谈论一个具有截然不同的对象概念(如果有的话)的世界。所以看起来最简单的事情就是使用 DSL 来指定连接。

为此使用对象可能会有点复杂,因为要为不同的数据库驱动程序指定不同的字段。只是说...

此外,由于这些字符串非常古老,因此您可以期望任何您感兴趣的数据库都能理解这些字符串。轻松连接到您最喜欢的新数据库!

【讨论】:

  • 感谢您,对于所有不同的数据库驱动程序,您可以为每个从连接对象继承的对象创建一个对象
【解决方案2】:

好吧,在上面的示例中,如果您想更改连接的任何部分,则需要重新编译和部署。为了解决这个问题,您需要将该信息存储在某处(配置文件)。这几乎就是连接字符串可以让您做的事情 - 拥有一个由配置驱动的连接。

【讨论】:

    【解决方案3】:

    传统、传统,但最重要的是:灵活性。

    尝试编写(或想象)可以处理所有 MS-SQL、Oracle 和(嵌套)ODBC 配置的 connectionConfig 对象。而这只是支持 .NET 的数据库中的一小部分。

    此外,此类对象的主要目的是以(某种程度上)人类可读的形式进行序列化。

    所以 XML 是一种替代方法,而不是固定(一组)对象。

    【讨论】:

      【解决方案4】:

      您可以像示例中那样创建一个包装器来构建连接字符串,但我怀疑您是否可以完全避免使用连接字符串。数据库需要一个连接字符串,这在很长一段时间内都是常态。鉴于它们仍然是常态,可以肯定地假设利大于弊。

      【讨论】:

        【解决方案5】:

        连接字符串通常位于 xml 配置文件 (Web.config) 或注册表中。硬编码它们是个坏主意。此外,它们应该是人工可编辑的。所以无论如何都是文本。

        (啊,还有一些特定于提供商的密钥,afaik...)

        【讨论】:

          【解决方案6】:

          主要原因是因为连接到数据库所需的信息取决于数据库供应商。 Oracle 以一种方式做事,旧的 Jet 引擎以不同的方式做事,SQL Server 以另一种方式做事,ODBC 规范......好吧,你明白了。

          查看 MSDN 中的 DbConnectionStringBuilder 类及其子类,了解创建连接字符串的强类型方法。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-09-26
            • 2013-04-12
            • 2015-10-30
            • 1970-01-01
            • 2019-06-09
            • 1970-01-01
            相关资源
            最近更新 更多