2

大規模な古いシステムとやり取りする新しいユーティリティに、Java の DBF ファイルを使用しようとしています。Java ODBC ブリッジを使用してアクセス、読み取り、書き込み、更新を行うことはできますが、NTX インデックスは更新されません。インデックスを使用できると主張している xbasej を見つけましたが、NDX インデックスしか使用できないようです。それらを使用する前にいつでも作成できますが、それでも他のすべてのプログラムで使用される NTX のものは更新されません。ここには数千のプログラムがやり取りされているため、NDX に切り替えるだけでは不可能であり、予算もありません。

だから私の質問は: xbasej に NTX インデックスを使用させる方法はありますか、データベースを編集する前にそれらすべてを開くと、NTX ファイルを自動更新できる無料の Java ライブラリが他にありますか?

ああ、ポート 6262 を転送し、ファイアウォールを完全にオフにしてテストしました。

どんな助けでも大歓迎です。

どうやらDBFおよびNTXファイルを開くことができるSybase Advantageドライバーリンクを見つけました。データアーキテクトプログラムを使用して、データにアクセスするためのデータディクショナリを作成できますが、Javaからそれを使用する方法を理解できません。すべての例はある種のサーバー接続が必要です。このようなものが動作するはずです:

try {
        Class.forName("com.extendedsystems.jdbc.advantage.ADSDriver");
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(DBFTest.class.getName()).log(Level.SEVERE, null, ex);
    }

    try {
        ADSConnection conn = (ADSConnection) DriverManager.getConnection("jdbc:extendedsystems:advantage://localhost:6262;catalog=//llama-rog/c/stock/DD.add;user=master;password=master");   
    }catch (SQLException ex) {        
        Logger.getLogger(DBFTest.class.getName()).log(Level.SEVERE, null, ex);
    }        
}

接続しようとするたびに、次のようになります。

com.extendedsystems.jdbc.advantage.ADSException: [iAnywhere Solutions][Advantage JDBC]Connection refused: connect
at com.extendedsystems.jdbc.advantage.n.<init>(Unknown Source)
at com.extendedsystems.jdbc.advantage.ADSConnection.<init>(Unknown Source)
at com.extendedsystems.jdbc.advantage.ADSDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:243)
at dbftest.DBFTest.main(DBFTest.java:30)

私は何時間も検索しましたが、DBF と関連するインデックスがリストされているローカルのみのデータ ディクショナリ (.add) に接続するサンプル コードを完全に検索しました。Data Architect が ADS.ini で作成するエイリアスの使用について誰かが言及しましたが、これを行う方法の痕跡はありません。Jar ファイルには javadoc は含まれていません。いくつかの HTML ヘルプ ファイルだけが含まれており、私がトロールしても何も見つかりませんでした。

接続をテストできると思われるテスターアプリがありますが、接続文字列、ユーザー名、パスワードを入力する必要があり、データ辞書やフリーテーブルを介して接続することはできず、常に同じエラーが発生します。

これを機能させる方法を知っている人はいますか。彼らのデータ アーキテクト ツールを介して機能するという事実は、何らかの形で機能することを証明していますが、その機能を正確にどのようにコピーできるかはわかりません。

4

1 に答える 1

3

Advantage JDBC ドライバーには、この製品のクライアント サーバー バージョンである Advantage データベース サーバーが必要です。「予算がない」というコメントに基づいて、サーバーを購入していないと思います。その場合、JDBC ドライバーは役に立ちません。Connection refused接続を受け入れるサーバーがないため、エラーが発生している可能性があります。

ODBC ブリッジを使用できる場合は、Advantage Local Server に接続できる Advantage ODBC ドライバーを使用する可能性があります (非クライアント サーバー バージョンで、使用状況に応じて無料です ... ライセンスを読む)。Advantage ODBC ドライバーをインストールし、データ ディクショナリを指定するデータ ソースをセットアップできるはずです (Advantage Data Architect で使用したのと同じパスを使用)。

おそらく既にこれを行っていると思いますが、データ ディクショナリを作成してテーブルを追加したときに、テーブルごとに適切な .ntx ファイルを追加したことを確認してください。Advantage には、それ以外の場合、どのインデックスがどのテーブルに属するかを判断する方法がありません。

于 2012-09-02T23:30:06.553 に答える