私はこの正確な問題を自分で抱えていました。したがって、明らかにNTXファイルは独自の形式であり、オープンソースのxBaseJはそれらを使用できません。インデックスを更新したくない場合は、それが機能します。そうでない場合は、別の解決策を見つける必要があります...幸いなことに、私は私のために機能しているものを持っています:
注:これはMacでは少し異なる場合があります。私はMacを所有していないためわかりませんが、必要に応じて違いを解決できます。Linuxでも異なる可能性があります。現在、Linuxボックスが機能していないため、テストできません。恐れ入りますが、これをWindowsで機能させるために必要なのはこれまでだけです。
(1)リソースの収集:ここに移動:http ://devzone.advantagedatabase.com/dz/content.aspx?Key = 20&Release = 19
Data Architect UtilityとODBCドライバーをダウンロードします(他のドライバーの1つも機能する可能性がありますが、実際にAdvantageDatabaseサーバーを購入する必要があるJDBCドライバーを使用する場合、ODBCドライバーは無料です。選択してください)
(2)データベースの説明:データアーキテクトユーティリティを開き、新しいデータディクショナリを作成します(ファイルメニュー)。サーバータイプとしてローカルサーバーを選択し、データベースをDBFを含むフォルダーに設定します。新しいディクショナリでテーブルを右クリックして[既存のものを追加]を選択し、開いているダイアログのタイプドロップダウン(デフォルトでは非表示)からDBFテーブルを選択し、dbfsを選択します。テーブルタイプとしてClipperを選択し、テーブルに対して[OK]を押します。次に、各テーブルを右クリックし、[既存のインデックスの追加]を選択して、使用するNTXインデックスを指定します。データアーキテクトを使用してファイルを編集すると、インデックスが更新されます。
(3)ODBCドライバーのセットアップ「データソース(ODBC)」(Windowsのコントロールパネル)に移動し、[システムDSN]タブをクリックし、[追加]をクリックして、[アドバンテージ]を選択し、SQL ODBCを合理化して、名前(この名前)を付けます。コードで使用されるため、静的であるか、構成ファイルに入れるか、引数として渡す必要があります)、[データディクショナリ]にチェックマークを付け、手順(2)で作成された.ADDファイルを参照します。 DBF:
テーブルタイプ=クリッパーアドバンテージロック=互換性のある使用可能なサーバータイプ=(実際のアドバンテージサーバーを購入した場合を除き、ローカルサーバー[ALS]のみを選択してください)
残りのオプションは次のようになります(私が言及しなかったものは違いを生むべきではありません。
(4)Javaコードの例
String dbfConnectionUrl = "jdbc:odbc:SML_ODBC"; //Set the ODBC URL
Connection dbfCon = null; //A connection
PreparedStatement dbfUpd = null; //I am using a prepared statement here but jsut regular statements work just as well
dbfCon = DriverManager.getConnection(dbfConnectionUrl); //Connect to the database, NOT the DBF, the database is the folder containing all the DBFs
dbfUpd = dbfCon.prepareStatement("UPDATE DBFName SET OPENVOL = ?, SLPERVOL = 0, TFPERVOL = 0 WHERE SCAN = ? AND STORE = ?"); //Then use regular old SQL same as any other JDBC driver, note that you use the name of the DBF (.DBF not needed) as the table names.
//Setting my variables
dbfUpd.setBigDecimal(1, 10);
dbfUpd.setString(2, "0000000000001");
dbfUpd.setString(3, "02"));
dbfUpd.executeUpdate(); //Update
明らかに、あなた"INSERT INTO myDBF (RUT, RS, TIPO, TDOC) VALUES ('123456', 'SomeCompany', '2', '6');"
はあなたの例をするようなステートメントを非常に喜んで使うことができます。
したがって、初期設定後は、本当に簡単です:)このソリューションを見つけるのに数か月かかり、JavaでNTXインデックスを使用する他の方法にまだ出会っていないため、これが役立つことを願っています。