問題タブ [jackcess]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
186 参照

java - Jackcess で複数列インデックスを使用して最初の列で一致させる

Jackcess 2.1.5 を使用して、colA と colB に複数列のインデックスを持つ Access 2003 テーブルからデータを読み取ります。これは、colAcolB の値が与えられた場合に正常に機能します。

現在、理論的には、そのようなインデックスを使用して、 colA onlyの値に一致するすべての行を取得できます。しかし、Jackcess でこれを行うにはどうすればよいでしょうか。newEntryIterableまたはを使用して動作させることができませんEntryIterableBuilder

現在、colA のみをカバーする別のインデックスがあります。これが唯一の解決策ですか?

0 投票する
0 に答える
83 参照

java - Jackcess Javaで画像を挿入する方法

私は Jackcess の新しいユーザーです。

MS Access テーブルに新しい行を挿入するために addRowFromMap メソッドを使用していますが、画像を挿入できません。

テーブルの列には正しい形式がありますが、それを行うことはできません。

java File format、java bytearrayを挿入しようとしましたが、何もしません。

提案やドキュメントへのリンクはありますか?

前もってありがとう、エミリアーノ

0 投票する
0 に答える
159 参照

java - MS Access テーブル行のテキストの検索と置換が機能しない

ディレクトリを指定すると、私のアプリケーションは.mdb、Jackcess API を使用して MS Access データベースを走査してロードします。各データベース内には、テキストを含むGCMT_CMT_PROPERTIESという名前の列を持つ名前のテーブルがあります。cmt_dataまた、文字列から特定の単語を置き換えるときに辞書として使用するMapperオブジェクト (本質的にはに似ていますが、重複キーを許可する) もあります。Map<String,String>

したがって、たとえば if mappercontainsfox -> dogの文は に"The fox jumps"なり"The dog jumps"ます。

このプログラムで使用する設計は次のとおりです。

TaskMdbUpdater指定された db ファイルで適切なテーブルと列を見つけ、テーブルの各行で「検索と置換」ルーチンを繰り返し実行して、辞書から単語を検出し、それらを置換します (上記の例に示すように)。データベースを閉じる前にその行を更新します。の各インスタンスはTaskMdbUpdater、Jackcess API がDatabaseBuilder割り当てられたバックグラウンド スレッドであるため、データベースを操作できます。

現在の状態では、コードは例外をまったくスローせずに実行されていますが、Access を介してデータベースを「手動で」開いて特定の行を検査すると、変更されていないように見えます。問題の原因を突き止めようとしましたが、運が悪かったので、サポートをいただければ幸いです。さらにコードを表示する必要がある場合は、お知らせください。それに応じて質問を更新します。

更新 1: カスタムStringUtils.findAndReplaceロジックを検証するために、合格している次の単体テスト (JUnit で) を実行しました。

TaskMdbUpdater障害点がどこかにあると思われるため、いくつかのロギングコードを含めて、ここにクラスを個別に含めていcallます。

これが私のログからの小さな抜粋です。ご覧のとおり、テーブルを開いた後は何もしないようで、少し当惑しました。

この時点以降、ログにはエントリ エントリがなくなり、プロセッサは 100% の負荷で急上昇し、アプリケーションを強制終了するまでそのままになります。これは、プログラムが無限の while ループに陥ったことを意味している可能性があります。

更新 2

さて、logTRACEを に出力することで、問題をさらに絞り込みましたstdio。私のperformFindAndReplaceOnStringは非常に非効率的で、長い文字列を削っているだけなので、これらのデータベースの最初の行を通過することはありません。このユースケースで文字列置換を効率的に実行する方法について何か提案はありますか?

0 投票する
2 に答える
232 参照

java - Jackcess: MSAccess データベースの文字セットが正しくありません

「暗号化された」文字列を含む MS-Access データベースがあります。これらは次のようになります。 暗号化された文字列

しかし、これらの文字列の長さが平文の長さと正確に一致することにすぐに気付きました (私は平文を知っています)。そのため、Excel で少し試してみたところ、-関数を使用すると=CODE(<char>)(デフォルトの文字セットで文字コードを取得し、その逆も=CHAR(<number>)可能)、この数値を記号が表す文字の文字コードと xor することがわかりました。常に同じ結果が得られます。つまり、Java と voila でこれらの値を使用して配列を作成するだけです。Excel の例 (右側の「配列」): Excel の例のデコード 例: ">>" は (10 進) 187 のインデックスを持っているため、187xor253 は 70 => "F" を生成します。

現在、jackcess を使用してこれらの値にアクセスしています。「復号化」はほとんど問題ありませんが、文字列から間違った文字を取得することがあります。Excel では、すべてが正常に機能します。最良の結果をもたらすコード:

しかし、私が言ったように、一部の文字はまだ間違っていますが、Excel ではすべて問題ありません。出た数字をプリントアウトするgetBytes("cp1272")とエクセルとは全然違います。

私が間違っている可能性があることと、JavaがExcelとは異なる値を与えることがあるのはなぜですか?より良いアプローチは何でしょうか?私はすでに文字セットのすべての組み合わせを試しました。いくつかは他の失敗した場所で機能しましたが、他の間違った結果が得られました。