Как я могу запросить название продукта базы данных с ADO.NET? - PullRequest
1 голос
/ 28 января 2009

Я разрабатываю продукт с пользовательской конфигурацией базы данных. Я использую ADO.NET с System.Data.Odbc.OdbcConnection для этого. Чтобы сделать некоторые различия между базами данных, существует простое решение для определения текущей СУБД соединения.

Ответы [ 3 ]

2 голосов
/ 28 января 2009

Я думаю, что свойство OdbcConnection.Driver может быть более подходящим в контексте OP, поскольку ServerVersion должен возвращать только номер версии.

Свойство Driver возвращает имя DLL, например, «Sqlsrv32.dll» в случае SQL-сервера. Тогда OP может применять логику на основе регистра.

1 голос
/ 30 января 2009

Я нашел следующее решение самостоятельно:

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

Например, это возвращает Microsoft SQL Server и не зависит от драйвера.

1 голос
/ 28 января 2009

connection.Database будет работать, или вы можете выполнить

select db_name()

, чтобы развернуть соединение. База данных

connection.Open();
        Console.WriteLine("ServerVersion: " + connection.ServerVersion
            + "\nDatabase: " + connection.Database);
        connection.ChangeDatabase("master");
        Console.WriteLine("ServerVersion: " + connection.ServerVersion
            + "\nDatabase: " + connection.Database);
        Console.ReadLine();
...