This question and answers discuss理论以及实现预期结果的方法,所以我不想重新散列这些建议。在重写所有tableadapters之前,我正在尝试确保在我的实例中没有简单的解决方案。
我所拥有的是一个相对成熟和复杂的项目,它利用了许多数据集,这些数据集都是用VS设计并访问VistaDB数据库(最初是SQLCE)。由于各种原因,我现在希望将数据集绑定到用户可选择的实际数据库。最终用户的数据库选择将仅限于使用相同SQL命令的数据库。
我已经完成了一些研究,并且有几个假设的解决方案声称要做到这一点但是在深入研究时他们不会改变数据库类型 - 只有它的连接字符串或路径。
有没有人真正实现了这个目标,如果是这样,他们至少可以告诉我理论,最多只提供他们使用过的代码。
谢谢...
答案 0 :(得分: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