Изменить / Создать ODBC-соединение из кода - PullRequest
4 голосов
/ 23 декабря 2010

Я работаю против БД Informix из C # ASP .Net 4.0 через соединение ODBC. Эта база данных часто меняется, поэтому я прочитал, какие БД установлены из таблицы sysmaster.

В зависимости от выбора, который делает мой пользователь, мне нужно установить соединение ODBC с выбранной БД или изменить текущее соединение, чтобы перейти от БД systmaster к выбранному.

Кто-нибудь есть идеи, как это сделать? Я подозреваю, что должно быть возможно установить временное соединение ODBC. Также в Visual Studio в свойствах для моего подключения ODBC у меня есть строка подключения, похожая на эту:

Dsn=Informix;uid=xxxxx;database=sysmaster;host=10.10.10.10;srvr=testdb1;serv=3000;pro=onsoctcp;cloc=en_US.819;dloc=en_US.819;vmb=0;curb=0;scur=0;icur=0;oac=1;optofc=0;rkc=0;odtyp=0;ddfp=0;dnl=0;rcwc=0

Я искал библиотеку для прямого подключения без ODBC к Informix, но теперь с успехом.

Спасибо, Stefan

Ответы [ 2 ]

3 голосов
/ 23 декабря 2010

Я разработал рабочее решение, которое довольно приятно.Я не осознавал, что .NET имеет полную поддержку для выполнения этого из кода без фактического изменения настроек ODBC.

    const string sConnString = "Driver=Informix;uid=user;pwd=password;database=x10stg01_1312;host=10.10.10.10;srvr=testdb1;serv=3000;pro=onsoctcp;cloc=en_US.819;dloc=en_US.819;vmb=0;curb=0;scur=0;icur=0;oac=1;optofc=0;rkc=0;odtyp=0;ddfp=0;dnl=0;rcwc=0";
    var oOdbcConnection = new System.Data.Odbc.OdbcConnection(sConnString);

    string queryString =
        "SELECT * FROM tevoc WHERE ev_oc_id=6599098";
    OdbcCommand command = new OdbcCommand(queryString);

    command.Connection = oOdbcConnection;
    oOdbcConnection.Open();
    OdbcDataReader odbcDataReader = command.ExecuteReader();

    while (odbcDataReader.Read())
    {
        CheckDiv.InnerHtml += "Result: " + odbcDataReader.GetString(6) + "<br/>";
    }

Я полагаю, вам нужно настроить рабочее соединение ODBC, прежде чем пытаться код, чтобы просто бытьубедитесь, что драйвер может быть в порядке или хотя бы посмотрите в списке доступных драйверов ODBC.

2 голосов
/ 23 декабря 2010

Полагаю, вы можете напрямую связываться с реестром, но вы также можете вызвать odbcconf.exe, которая является стандартной утилитой Windows.Вот ссылка MSDN

Когда я изучал, как манипулировать соединениями ODBC, я сделал что-то вроде следующего, чтобы добавить соединение:

odbcconf.exe /a {CONFIGSYSDSN "SQL Server" "DSN=?|Description=?|SERVER=?(local)|Trusted_Connection=no|Database=?"}

Конечновы бы заменили ? на ваши собственные параметры.

...