与不同类型的dbms交互的c#应用程序
我正在开发一个c#应用程序,它将能够使用用户可能安装的所有类型的DBMS。我想知道是否有任何库或窗口API可以与MySql、MsSql、Sqlite等所有数据库交互 您可以使用接口而不是具体的类,例如代替与不同类型的dbms交互的c#应用程序,c#,C#,我正在开发一个c#应用程序,它将能够使用用户可能安装的所有类型的DBMS。我想知道是否有任何库或窗口API可以与MySql、MsSql、Sqlite等所有数据库交互 您可以使用接口而不是具体的类,例如代替SqlConnection。然后您只需要一个类,该类使用具体类型(例如aIDataReader或IDbCommand)返回接口 例如: public class DB { public enum Provider { SqlServer, MySql, Oracle//
SqlConnection
。然后您只需要一个类,该类使用具体类型(例如aIDataReader
或IDbCommand
)返回接口
例如:
public class DB
{
public enum Provider {
SqlServer, MySql, Oracle//, ...
}
public DB()
{
this.CurrentProvider = Properties.Settings.Default.Provider; // presuming that you have this setting
}
public Provider CurrentProvider { get; set; }
public IDbConnection NewConnection()
{
switch (this.CurrentProvider) {
case Provider.SqlServer:
return new SqlConnection(Properties.Settings.Default.ConnectionString);
case Provider.MySql:
return new MySql.Data.MySqlClient.MySqlConnection(Properties.Settings.Default.ConnectionString);
// ...
default: throw new NotSupportedException(CurrentProvider.ToString());
}
}
// and other methods ....
}
这样,只有这个类需要知道当前的dbms。当然,您必须使用标准sql,并且不能使用特定于数据库的方法,如
行数
要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题,因为堆栈溢出而与主题无关。很抱歉误解,但我的意思是如何与所有类型的数据库交互“.所有类型的DBMS…”这可能是一个过于宽泛的要求