FireBirdの動作環境について

 

テンプレートから作成する方法。

WindowsFormFireBirdTemplateを選択。

参照のFirebirdSql.Data.FirebirdClient.dllを削除してからFirebirdSql.Data.FirebirdClient.dllを参照設定する。

必要なDLLを実行ファイルフォルダに置く。

icuuc52シリーズは使用不可 icuuc30を使う。

 

 

.Neプロバイダーは.Net4のバージョン毎に存在するので4.0と4.5は別々。ただし、32ビットと64ビットの違いはなし。

FireBird Embedded は.Net4のバージョン毎には存在しないが、32ビットと64ビットの違いがある。このため、32ビット環境と64ビット環境では異なるdllを使うこと。ただし、64ビット環境とは、64ビットのOSではなくて、64ビットアプリということ。通常は64ビットのOSでも作成されるのは32ビットアプリであることに注意。

このことは、64ビットのPCでVS2010を使っていても32ビット動作なので、32ビットのFireBird Embeddedを使うということ。

・開発する.netのバージョンに合うFirebirdSql.Data.FirebirdClient.dllをダウンロードし、参照の追加で参照する。

・開発する環境に合うビットのFireBird Embedded をダウンロードし(新バージョン下ではEmbeddedは統合されている。)

  • fbembed.dll
  • ib_util.dll
  • icudt30.dll
  • icuin30.dll
  • icuuc30.dll
  • engine12.dll(plugins内に入れる)

icuin52.dllt等30ではなく52というものがあるがこれでは動作しない。engine12.dllも2016/9/16バージョンで新しいものはダメ。

を実行ファイルのフォルダにコピーする。fbembedの名前を変える必要なし。項目の追加でVSでの参照も必要なし。

・このように FireBird Embeddedはビット毎異なるので32ビットのDLLを64ビットで使うことができない。つまり、32ビットのアプリは64ビットでは動かないので、ビットを確認してコピーするDLLを選択するプログラムとしなくてはならない。

実は、「間違えた・・・」に関してはFirebird関係ではなく、msvcr100.dll関係であった。これが64ビットのものであれば当該エラーになるようだ。逆に言うと、このファイルはない方が動作する。

また、全く起動しないという現象も特定のソフトで出現したが、これもFirebird関係ではなく、マルチロウのdllの関係だった。このdllはインストーラーで作成されたものを使うと上手く行く。

・コネクションストリングでFireBirdのデータベースは必ずApplication.StartupPathで実行ファイル下となるよういすること。ここで大きくはまった。

・gcMultiRowのDataField プロパティ は必ず大文字にすること。

 

・主キーを自動インクリメント
string sql = “CREATE SEQUENCE seqtest”;
FunDB.Commit(sql, conString2);

string sql = ” insert into csharp_test(id, name) values(next value for seqtest, ‘test’)”;
FunDB.Commit(sql, conString2);
○連番を得る
データベースにSEQUENCEを登録する
sql = “CREATE SEQUENCE seqtName”;

これをインサート時のSQLに使用

string sql = " insert into filesPath(id, name) values(next value for seqtName," + ",'" + fi.FullName + "')";
又は、
int GetSequence(string seqtName, string ConnectionString)
{
try
{
int r = -1;
string sql = @"select gen_id(seqtName, 1) from rdb$database;";

using (var con = new FbConnection(ConnectionString))
using (var command = con.CreateCommand())
{
con.Open();
command.CommandText = sql;
var reader = command.ExecuteReader();
reader.Read();
r = reader.GetInt32(0);

return r;
}
}
catch (Exception ex)
{
return -1;

}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください