1

我开发了一个具有自定义数据库配置的产品。我将 ADO.NET 与 System.Data.Odbc.OdbcConnection 一起使用。为了在数据库之间做出一些区别,有一个简单的解决方案来检测连接的当前 DBMS。

4

3 回答 3

2

我认为 OdbcConnection.Driver 属性在 OP 的上下文中可能更合适,因为 ServerVersion 应该只返回版本号。

Driver 属性将返回 DLL 的名称,例如 SQL Server 的“Sqlsrv32.dll”。然后OP可以应用基于案例的逻辑。

于 2009-01-28T18:33:58.653 回答
1

connection.Database 可以工作,或者您可以执行

select db_name()

扩展connection.Database

connection.Open();
        Console.WriteLine("ServerVersion: " + connection.ServerVersion
            + "\nDatabase: " + connection.Database);
        connection.ChangeDatabase("master");
        Console.WriteLine("ServerVersion: " + connection.ServerVersion
            + "\nDatabase: " + connection.Database);
        Console.ReadLine();
于 2009-01-28T17:49:07.577 回答
1

我找到了以下解决方案:

DataTable td = conn.GetSchema(DbMetaDataCollectionNames.DataSourceInformation);
DataRow info = td.Rows[0];
String name = info[DbMetaDataColumnNames.DataSourceProductName];

例如,这将返回Microsoft SQL Server,并且与驱动程序无关。

于 2009-01-30T18:54:55.033 回答