0

这个问题和答案讨论了实现预期结果的理论和方法,所以我不想重新讨论这些建议。在我重写所有的 tableadapter 之前,我试图确保在我的实例中没有一个简单的解决方案。

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

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

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

谢谢 ...

4

1 回答 1

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
于 2010-06-26T12:23:35.380 回答