【问题标题】:Change VS created dataset's source database at runtime在运行时更改 VS 创建数据集的源数据库
【发布时间】:2010-06-26 20:23:35
【问题描述】:

This question and answers discuss 达到预期结果的理论和方法,所以我不想重新散列这些建议。在我重写所有的 tableadapter 之前,我试图确保在我的实例中没有简单的解决方案。

我所拥有的是一个相对成熟和复杂的项目,它利用了许多用 VS 设计的数据集并访问 VistaDB 数据库(最初是 SQLCE)。由于各种原因,我现在希望将数据集绑定到用户的实际数据库设为可选。最终用户的数据库选择将仅限于使用相同 SQL 命令的数据库。

我已经进行了大量研究,一些假设的解决方案声称可以做到这一点,但在深入研究时,它们不会更改数据库类型 - 只是连接字符串或路径。

有没有人真正做到了这一点,如果有,请他们至少告诉我理论,最好提供他们使用的代码。

谢谢...

【问题讨论】:

    标签: database dataset runtime tableadapter


    【解决方案1】:

    如果您使用接口 IDbConnection、IDataReader、IDbCommand 和 IDbDataAdapter 而不是直接使用数据库引擎类来实现自己的数据库层,则可以针对多个数据库引擎。

    本文在此处描述了此方法: http://www.dotnetjohn.com/articles.aspx?articleid=244

    还请注意,当针对多个数据库引擎时,您应该修改您的 sql 语句。例如,VistaDB 和 SQL Server 接受单引号内的日期 ('2010-06-26'),而 Access 数据库接受 # 符号 (#2010-06-26#) 作为日期。

    这也可以在您的数据库层中使用返回这些字符的函数来完成:

    'Access DB Provider
    Public Function GetDateSQLChar() As String Implements MyDataLayer.GetDateSQLChar
       Return "#"
    End Function
    

    'VistaDB Provider
    Public Function GetDateSQLChar() As String Implements MyDataLayer.GetDateSQLChar
       Return "'"
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      相关资源
      最近更新 更多