none
Подключение C# к IBM DB2 на Windows 8 RRS feed

  • Вопрос

  • Добрый день.

    Есть необходимость подключения программы, написанной на C#,  к базе данных на IBM DB2 на Windows 8. 

    В Windows 7 аналогичный код работает великолепно.

    using IBM.Data.DB2;
    
    private String connectionString = @"Server=SUN:50000;Database=SE;UID=db2admin;PWD=Sibelektro1;Connect Timeout=60";
    
    DB2Connection connect = new DB2Connection(connectionString);
                connect.Open();
                MessageBox.Show("Opened");
                connect.Close();
    

    В Win 8 сначала выдавал что-то вроде:

    System.InvalidOperationException: SQL1159  Initialization error with DB2 .NET Data Provider, reason code 2, tokens C:\Users\User-1\Documents\Visual Studio 2012\Projects\db2ConnTest\db2ConnTest\bin\db2app.dll, , Process Owner: User-1
       в IBM.Data.DB2.DB2ConnPool.Open(DB2Connection connection, String& szConnectionString, DB2ConnSettings& ppSettings, Object& ppConn)
       в IBM.Data.DB2.DB2Connection.Open()
       в db2ConnTest.Form1.button1_Click(Object sender, EventArgs e) в c:\Users\User-1\Documents\Visual Studio 2012\Projects\db2ConnTest\db2ConnTest\Form1.cs:строка 25
     
    

    Берем db2app.dll из "C:\Program Files\IBM\SQLLIB\BIN", кладем в \bin компилируемого проекта - подключение работает. Но куда этот db2app пихать в машине конечного пользователя? Или что я упускаю? 

    Клиент - IBM DB2 data server runtime client v10.1

    10 октября 2012 г. 2:09

Ответы

  • В проекте  открываете узел References, находите там библиотеку и открываете ее свойства и устанавливаете Copy Local в true. После этого при сборке приложения db2app.dll будет копироваться в папку с exe'шником. Соответственно таскаете после этого запускаемый файл вместе с библиотекой. 

    Второй вариант: это установить драйвера, которые скорее всего загоняют dll'ку в GAC.


    • Помечено в качестве ответа Abolmasov Dmitry 19 октября 2012 г. 9:04
    10 октября 2012 г. 5:20
    Модератор

Все ответы

  • В проекте  открываете узел References, находите там библиотеку и открываете ее свойства и устанавливаете Copy Local в true. После этого при сборке приложения db2app.dll будет копироваться в папку с exe'шником. Соответственно таскаете после этого запускаемый файл вместе с библиотекой. 

    Второй вариант: это установить драйвера, которые скорее всего загоняют dll'ку в GAC.


    • Помечено в качестве ответа Abolmasov Dmitry 19 октября 2012 г. 9:04
    10 октября 2012 г. 5:20
    Модератор
  • Я сейчас не на работе (а проверить могу только там), но в том и соль, что прога работала только когда эта dll'ка в bin\ папке, а exe'шник в bin\debug >_<'

    Закидывал dll'ку руками к exe'шнику, все валилось.

    Спасибо за совет, выйду - проверю.

    10 октября 2012 г. 15:15
  • Привет.

    Если ничего не выйдет, то так и получится таскать dll в папке, которая "выше" в иерархии, чем exe.

    Например, папка с программой MyProgram в ней папка bin, где лежит exe, а dll будет лежать в MyProgram.


    Для связи [mail]

    12 октября 2012 г. 10:02