問題タブ [cachedrowset]
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.
java - RowSet、CachedRowSetなどの実装
今日までResultSet、クエリの結果を処理するときに一緒に作業していました。しかし、今日私は少し読んで、それらが私の目的をよりよく果たすことができることに気づきましたRowSet。CachedRowsetすべての例で、オブジェクトと呼ばれる場所を読みましたがRowSet、CachedRowSetコードで自分で試してみると、それらがインターフェースであり、例ではそれらのインターフェースの実装を使用していることがわかりました。
今私の質問は、それらの実装をどこで見つけるかです、そして何か公式なものはありますか?
それらをダウンロードする必要がありますか、それともJDKに付属していますか?
java - OracleCachedRowSetは、データベースに書き込まずにメモリ内のデータを更新します
oracle jdbc cachedrowset実装を使用して、クエリから返される複数の行を選択しています。次に、cachedrowset.updateInt()または他の更新メソッドを使用していくつかのデータを更新します。最初にcachedrowset.beforeFirst()を使用してカーソルを戻し、次に行セットを再度トラバースしてデータを印刷します。
getInt()を使用して取得したデータは元のデータです。元のデータに置き換えられたデータを取得したいのですが。dbに変更をコミットするつもりはありません。
データ操作と表示のためだけに、データベース上のデータを変更せずに、Rowsetオブジェクトをデータラッパーとして使用できると思いました。元の日付の代わりに更新された日付を取得する方法はありますか?自分のデータラッパーオブジェクトをコーディングしたくありませんでした
編集:これは私がデータを取得する方法であり、以下は私がそれを更新する方法です
更新コード:
java - CachedRowSet、ResultSetDynaClass、または別のコレクション?
非常に不十分な、大規模な webapp をクリーンアップしています。一度に全部は無理なので、小分けにしています。私がやりたいことの 1 つは、SQL ステートメントを受け取り、コレクションを返す関数を含むクラスを実装することです。私の計画は、Web アプリケーションの残りの部分に影響を与えずに、データベース フレームワークを探し回って、そのレイヤーを置き換えることができるようにすることです。
テンプレート スタイルのデータベース アクセス関数から ResultSet を返す際の大きな問題は、ResultSet を無効にしないと接続を閉じることができないことです。
この古いスタックオーバーフローの投稿で提案を見つけて興奮しました。
私はCachedRowSetで引用された記事を読みましたが、記事のどこで、その使用が大量の結果をそれ自体に詰め込むことによって多くの JVM メモリを吸い上げるという問題を引き起こす可能性があると述べているかが心配です。
代替の Apache ResultSetDynaClassやその他のコレクションにも同じ問題はありませんか? 結果は何らかの方法でメモリに書き込まれる必要があります。右?
ChaedRowSet、ResultSetDynaClass、または Java Collection を使用して ResultSet データを保存した場合、ResultSet を閉じるとそのデータは失われますか?
HashMaps を使用して、一般的なデータベース クエリ関数から単一のレコードを格納しました。
コードが煩雑になることなく、Java Collections を使用して複数のレコードを保存するにはどうすればよいですか? できると仮定すると、他の 2 つのオプションよりもリソース効率や柔軟性に優れているでしょうか?
情報やアイデアをお寄せいただきありがとうございます。
java - CachedRowSet:ResultSetデータを保持するために引き続き使用できますか?
SQLクエリを受け取り、他の場所で処理するためにResultSetを返すJava関数を作成したいと思います。接続が閉じられるとResultSetが無効になるため、これを行うことはできません。
ぐるぐる回って、治療法のように見える何かを持っている非常に古い(2004)OReillyの記事を見つけました:CachedRowSet。ResultSetをドロップするだけで、CachedRowSetがデータを保存し、接続を閉じて、返されたCachedRowSetを使用して他の場所でデータを操作できるようにします。
この記事では、SunによるCachedRowSetの実装について言及していますが、これはどこにも見つからないようです。
最新のjavadocs(Java 1.5以降の場合)には、同じ名前の「CachedRowSet」が含まれているようです。これは、ResultSetデータの単なるホルダーではありません。その「CachedRowSet」は、接続やその他すべての取得からデータベース処理全体を実行しているようです。
その「CachedRowSet」は、以前の記事で説明されているものと同じですか?
以前の記事のように、簡単なものが欲しいのですが。接続が閉じられた後に処理するためにResultSetをプロップするもの。
そのような動物はいますか?
ありがとう
java - CachedRowSet を使用した行の挿入に失敗しました
私は CachedRowSetImpl を使用しています。データベースからデータを取得できますが、挿入できません。
これはコードです:
例外をスローします:
スレッド「メイン」での例外 java.sql.SQLException: NewClass.main(NewClass.java:32) の com.sun.rowset.CachedRowSetImpl.insertRow(CachedRowSetImpl.java:5462) で行の挿入に失敗しました
CachedRowSetImpl の代わりに JdbcRowSetImpl を試しましたが、問題なく動作します
更新:私はこのコードを使用して、例外に関する詳細をキャッチしました:
出力は次のとおりです。
SQLState:null
エラーコード:0
メッセージ: 行の挿入に失敗しました
java - スコープ外になった場合でも、常に CachedRowSet を閉じる必要がありますか?
次のコード スニペットを検討してください。
ここで、CachedRowSetオブジェクトはメソッドでローカルに使用されます。ここで手動で閉じる必要がありますか?それとも、メソッドが終了したときに保持するコンテンツが自動的に収集されますか?
java - FilterRowSet でポインターを使用できませんか?
FilterRowSet を使用して、データベース クエリから適切な値をフィルター処理しようとしています。これは私のコードです:
問題は、フィルター条件を設定した後に行セットのポインターを設定できないことです。これにより、後でそのポインター (または同様のもの) を解析できなくなります。
FilteredRowSet クラスを使用する場合、これはバグまたは私が認識していないものですか?
java - Java JBDC CacheRowSetを使用して複数のテーブルにデータを保存しますか?
上記の質問のように。JOINクエリステートメントを使用して、CachedRowSetの複数のテーブルに一度にデータを保存できますか?
以下のサンプルSQLクエリステートメント
SELECT * FROM student INNER JOIN class ON student.class_id = class.id
それは可能ですか、それとも代わりにJoinRowSetまたは他のものを使用する必要がありますか?どんな助けでもいただければ幸いです。前もって感謝します。
java - ResultSetのキャッシュ
主観的な質問に似ています。質問の主な目的は、java.sql.ResultSetをキャッシュすることです。ただし、Connectionと緊密に結合されているため、推奨されないメカニズムであり、接続が閉じられるとデータがフラッシュされる可能性があることを私は知っています。この問題に対処するために、私はCachedRowSetを使用しています。CachedRowSetのインスタンスは、サードパーティのキャッシュツールを使用してキャッシュされます。これは、db呼び出しを減らすのに役立ちます。
私の実装のコードスニペットを以下に示します。このメソッドexecuteQuery(String)は、すべてのサブクラスがクエリの実行に使用する抽象クラスに実装されます。このメソッドを使用してシステムからデータをフェッチする顧客サブクラスも存在する可能性があります。
今、私は以下の点と少し混乱しています
ResultSetインターフェースの代わりに、CachedResultSetのインスタンスを返します。resultSetの正しい置換になります。ドライバーJAR、DBクラスは、お客様の環境によって異なる場合があります。顧客はカスタムクラスを作成し、AbstractクラスからのresultSetを期待します。それは何か問題を引き起こしますか?以下のようなもの
パブリッククラスCustomerXXはBaseClassを拡張します{
}
この種の操作に伴うリスク(キャッシング
CachedRowSet、データの正確性)作成のパフォーマンス
CachedRowSetResultSetすべての操作との互換性(ResultSet.getString()、ResultSet.get ..())。ドライバーがResultSet(SayjdbcResultSet、BaseResultSetなど)の異なるサブクラスを期待/生成する場合
他にも同じような質問がたくさんありますが、私は自分が有効で優先度が高いと感じているものをいくつか書いています。
私の質問がそれほど曖昧であるかどうかはわかりませんが、私の要件は十分に明確になっています。
どんなアイデア、考え、提案も高く評価されており、事前に感謝します
java - Oracle 日付フィールドから cachedrowset を使用するときに、日付と時刻のデータ全体を取得するにはどうすればよいですか
結果セットを使用してOracleからデータを取得し、cachedrowset. しかし、データベースで日付フィールドを取得して印刷すると、日付のみが印刷されます。私はAPIをチェックし、getDate()メソッドが戻りjava.sql.date、の時間がsql.date0にキャストされていることを知っています。私が呼び出すと、日付と時刻のデータ全体を取得できることをテストしますresultset.getString("datefield")。cahcedrowset
ここに私のソースコードがあります
executeQuery メソッド
ログを印刷するために3つの方法を使用しました
ログの内容は