我使用自定义数据库配置开发产品。我使用ADO.NET和System.Data.Odbc.OdbcConnection。为了在数据库之间做出一些区别,有一个简单的解决方案来检测连接的当前DBMS。
答案 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 并且与驱动程序无关。