与不同类型的dbms交互的c#应用程序

与不同类型的dbms交互的c#应用程序,c#,C#,我正在开发一个c#应用程序,它将能够使用用户可能安装的所有类型的DBMS。我想知道是否有任何库或窗口API可以与MySql、MsSql、Sqlite等所有数据库交互 您可以使用接口而不是具体的类,例如代替SqlConnection。然后您只需要一个类,该类使用具体类型(例如aIDataReader或IDbCommand)返回接口 例如: public class DB { public enum Provider { SqlServer, MySql, Oracle//

我正在开发一个c#应用程序,它将能够使用用户可能安装的所有类型的DBMS。我想知道是否有任何库或窗口API可以与MySql、MsSql、Sqlite等所有数据库交互

您可以使用接口而不是具体的类,例如代替
SqlConnection
。然后您只需要一个类,该类使用具体类型(例如a
IDataReader
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…”这可能是一个过于宽泛的要求