Как подключить и использовать встроенный сервер Firebird db с Visual C# 2010

Я пытался использовать встроенный сервер Firebird с Microsoft Visual C# 2010. Так вот, что я делал до сих пор:

  1. Загруженный поставщик данных Firebird .Net ( Firebird Client v2.5.2).

  2. Загруженный встроенный сервер Firebird ( Firebird Embedded Server v2.5.0).

  3. Добавил ссылку на FirebirdSql.Data.FirebirdClient.dll в мой проект.

  4. Извлеченный и скопированный файл fbembed.dll в каталог моего приложения.

  5. Добавил мой файл FDB "TEST.FDB" в каталог моего приложения.

  6. Добавлен оператор " using FirebirdSql.Data.FirebirdClient; ".

Пока все хорошо (я полагаю)...

Теперь, когда я пытаюсь подключиться к файлу FDB, используя следующий код:

    FbConnection con = new FbConnection("User=SYSDBA;" + "Password=masterkey;" + "Database=TEST.FDB;" + "DataSource=127.0.0.1;" + "Port=3050;" + "Dialect=3;" + "Charset=UTF8;");
    try  {
             con.Open();
         }
    catch (Exception ex) 
         {
            MessageBox.Show(ex.ToString());
         }

Я всегда получаю окно сообщения, которое означает, что код неправильно подключается к моему файлу БД. Я делаю что-то неправильно? Я действительно все еще нуб с C#, и я не знаю, как это сделать или исправить, и я надеюсь, что кто-то поможет мне с этим.

Спасибо:)

РЕДАКТИРОВАТЬ: вот что я получаю в исключении:

FirebirdSql.Data.FirebirdClient.FbException (0x80004005): невозможно выполнить сетевой запрос к хосту "127.0.0.1". ---> Невозможно выполнить сетевой запрос к хосту "127.0.0.1". в FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect() в FirebirdSql.Data.FirebirdClient.FbConnectionPool.Create() в FirebirdSql.Data.FirebirdClient.FbConnectionPool.CheckatanefbFF (atb).Form1.button1_Click(Отправитель объекта, EventArgs e) в C:\Documents and Settings\ermac\ Мои документы \Visual Studio 2010\Projects\fbTestApp\fbTestApp\Form1.cs: строка 25

3 ответа

Решение

Я наконец-то нашел решение после 6 часов работы:)

большинство ответов в Google либо неправильные, либо очень старые. все они говорят, что мне нужно только включить файл fbembed.dll в мой проект..

после некоторых исследований я сделал. Я обнаружил, что мне также нужно добавить firebird.msg, firebird.conf, icudt30.dll, icuin30.dll, icuuc30.dll и ib_util.dll в мои файлы проекта и в выходную папку..

Важное замечание: никогда не используйте компактный провайдер данных.Net. потому что они сделали это только для обычных и супер-серверов Firebird. это не будет работать со встроенными серверами.

Со встроенным Firebird 2.5 я копирую все эти файлы в каталог приложения:

aliases.conf (optional)
fbembed.dll
firebird.conf
firebird.msg
ib_util.dll
icudt30.dll
icuin30.dll
icuuc30.dll
Microsoft.VC80.CRT.manifest  : -- Not sure if this 3 files are necessary
msvcp80.dll                  : -- but i copy them :)
msvcr80.dll                  : -- see http://www.firebirdnews.org/?p=2248
intl\fbintl.conf   : Without those files you can't use
intl\fbintl.dll    : all charset and collations
udf\*  : if you want to use pre-build UDF

В строке подключения я указываю, что сервер встроен с помощью serverType=1:

User=SYSDBA;Password=masterkey;Database=E:\TEST.FDB;Dialect=3;Charset=UTF8;ServerType=1;

Я забыл также IDPLicense.txt и IPLicense.txt, я думаю, мы должны также распространять их вместе с заявкой на выдачу лицензии?

Я поместил DLL-библиотеки Firebird в каталог проекта Firebird. Добавлено событие Post Build для копирования файлов.

copy $(ProjectDir)Firebird\*.dll $(ProjectDir)$(OutDir)*.dll"

Для Firebird 3.0.5 необходимы следующие файлы и дистрибутив:

- root\plugins\engine12.dll

- root\intl\fbintl.conf
- root\intl\fbintl.dll

- root\fbclient.dll
- root\icudt52.dll
- root\icudt52l.dat
- root\icuuc52.dll

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

Другие вопросы по тегам