.NET/C# を使用して Interbase 7.1 データベースに接続する最良の方法を誰か説明してもらえますか?
アプリケーションは多くのエンド ユーザーのコンピューターにインストールされるため、アプリケーションと一緒にパッケージ化する必要がある "アドオン" は少ないほど良いでしょう。
CodeGear は、InterBase の登録ユーザー向けに無料の ADO.NET 2.0 ドライバーを提供しています。
http://cc.embarcadero.com/item/25497
「InterBase の登録ユーザー」には、無料の InterBase 2007 Developers Edition が含まれていることに注意してください。ダウンロードには 2007 用と書かれていますが、InterBase 7 では問題なく動作します。また、CodeGear の InterBase チームは、この目的で使用しても問題はないと述べています。
InterBase と Firebird では SQL 構文が多少異なり、他の機能も異なるため、Firebird 用に設計されたドライバーの使用はお勧めしません。特に、InterBase で fbclient.dll に依存するドライバーを使用することは非常に危険だと思います。
このプロバイダを確認してください:
ヘルプ ファイルのコードは多くの状況で機能しますが、すべてではありません。特に Windows 8.1、Windows Server 2012 マシンではそうです。
embarcadero から最新の InterBase_ADO.NET を入手してください。私が更新したバージョンは、Borland.Data.AdoDbxClient.dll のバージョン 16.0.4327.44959 でした。(ファイル、プロパティ、詳細を右クリックしてバージョン番号を表示します)。インストールでは、使用していないのに 64bit 用の x64 バージョンのフォルダーも作成されます。問題なくx86をターゲットにしました。
この ADO.NET のインストールは、すべてのマシンで行う必要はありません。プロジェクトに以下のファイルを含め、実行しているマシンに Interbase をインストールするだけで済みます。開発用コンピューターにのみドライバーをインストールしました。
インストールにより、データベースに接続するためにアプリケーションに入れる必要があるすべての必要なファイルが抽出されます。また、Readme ADO_NET 2_0 Driver for InterBase XE Installation and Usage Instructions.htm ファイルも作成されます。重要な注意:このヘルプ htm ファイルの DB 接続の例は、常に 100% 機能するわけではありません。解決策については、以下のコード例を参照してください。
ODBC 接続は必要ありません。.NET プロジェクトに含め、ローカルにコピーするファイルのリストは次のとおりです。
機能する 2 つの接続文字列が見つかりました。接続するには、次の 2 つの接続文字列のいずれかを使用します。
connectionstring1 = "DriverName=Interbase;Database=" + database + ";User_Name=" + userid + ";Password=" + password;
connectionstring1 = connectionstring1 + ";SQLDialect=3;MetaDataAssemblyLoader=Borland.Data.TDBXInterbaseMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,";
connectionstring1 = connectionstring1 + "PublicKeyToken=91d62ebb5b0d1b1b;GetDriverFunc=getSQLDriverINTERBASE;LibraryName=dbxint30.dll;VendorLib=GDS32.DLL";
connectionstring2 = “User_Name="+userid+";Password="+password+";Database="+database+";ServerType=0;Charset=NONE;LibraryName=.\\dbxint.dll;VendorLib=GDS32.DLL;GetDriverFunc=getSQLDriverINTERBASE;SQLDialect=3";
GlobalObjects.dbconn = (TAdoDbxConnection)TAdoDbxInterBaseProviderFactory.Instance.CreateConnection();
GlobalObjects.database = databasepath;
GlobalObjects.dbconn.ConnectionString = connectionstring1; //or connectionstring2
GlobalObjects.dbconn.Open();
Firebird .net プロバイダーは mono のものと同じだと思います。どちらも優れています。