Как подключить и использовать встроенный сервер Firebird db с Visual C# 2010
Я пытался использовать встроенный сервер Firebird с Microsoft Visual C# 2010. Так вот, что я делал до сих пор:
Загруженный поставщик данных Firebird .Net ( Firebird Client v2.5.2).
Загруженный встроенный сервер Firebird ( Firebird Embedded Server v2.5.0).
Добавил ссылку на FirebirdSql.Data.FirebirdClient.dll в мой проект.
Извлеченный и скопированный файл fbembed.dll в каталог моего приложения.
Добавил мой файл FDB "TEST.FDB" в каталог моего приложения.
Добавлен оператор " 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
Я проверяю их в начале своего заявления, чтобы я мог сообщить, что может пойти не так.