如何使用ADO.NET请求数据库产品名称?

时间:2009-01-28 17:41:57

标签: ado.net odbc database

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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();

答案 2 :(得分:1)

我找到了以下解决方案:

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

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