我开发了一个具有自定义数据库配置的产品。我将 ADO.NET 与 System.Data.Odbc.OdbcConnection 一起使用。为了在数据库之间做出一些区别,有一个简单的解决方案来检测连接的当前 DBMS。
Horcrux7
问问题
316 次
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 回答