Как подключиться и использовать встроенный сервер Firebird db с Visual С# 2010
Я пытался использовать встроенный сервер Firebird с Microsoft Visual С# 2010.
так вот что я сделал до сих пор:
-
Загруженный поставщик данных Firebird.Net (Firebird Client v2.5.2).
-
Загруженный сервер встроенной памяти Firebird < Firebird Embedded Server v2.5.0).
/li > -
Добавлен ссылка на FirebirdSql.Data.FirebirdClient.dll на мой проект.
-
Извлечен и скопирован файл fbembed.dll в каталог моего приложения.
-
Добавлен файл FDB "TEST.FDB" в каталог моего приложения.
-
Добавлен " с использованием инструкции 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());
}
Я всегда получаю сообщение, что означает, что код не подключается к моему файлу базы данных должным образом.
Я делаю что-то неправильно? Я действительно все еще ноб с С#, и я не знаю, как это сделать или исправить, и надеюсь, что кто-то поможет мне в этом.
спасибо:)
EDIT: вот что я получаю в исключении:
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.CheckOut() в FirebirdSql.Data.FirebirdClient.FbConnection.Open() в fbTestApp.Form1.button1_Click (Объект отправителя, EventArgs e) в C:\Documents и Настройки\ermac\Мои документы\Визуальные студия 2010\Projects\fbTestApp\fbTestApp\Form1.cs: линии 25
Ответы
Ответ 1
Наконец, я нашел решение после 6 часов работы:)
большинство ответов на google неверны или настолько стары.
все они говорят, что мне нужно включить файл fbembed.dll в свой проект.
после некоторых исследований, которые я сделал. Я обнаружил, что мне также нужно добавить файлы firebird.msg, firebird.conf, icudt30.dll, icuin30.dll, icuuc30.dll и ib_util.dll в мои проекты и в папку вывода..
важное уведомление: никогда не используйте компактный поставщик данных .Net. потому что они сделали это только для обычных и суперпинговых серверов. он не будет работать со встроенными серверами.
Ответ 2
С встроенным 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, я думаю, мы должны также распространять их с приложением для выдачи лицензии?
Ответ 3
Я поместил DLL Firebird в каталог в проекте Firebird. Добавлено событие Post Build для копирования файлов.
copy $(ProjectDir)Firebird\*.dll $(ProjectDir)$(OutDir)*.dll"