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 をダウンロードし
- fbembed.dll
- ib_util.dll
- icudt30.dll
- icuin30.dll
- icuuc30.dll
を実行ファイルのフォルダにコピーする。fbembedの名前を変える必要なし。項目の追加でVSでの参照も必要なし。
・このように FireBird Embeddedはビット毎異なるので32ビットのDLLを64ビットで使うことができない。つまり、32ビットのアプリは64ビットでは動かないので、ビットを確認してコピーする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; }