アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、javaの勉強中です。
そこで、ResultSetについて質問があります。

私は、今まで主にC#で開発をやっていました。
C#だと、クライアント(WindowsForm) → Webサーバー → APサーバー → DB
という構成で、サーバー間をデータセットでやり取りしていました。

ただ、javaは私のコーディングミスかもしれませんが、DBサーバーで取得した値を
ResultSetに入れて、Connectionやら、StatementをCloseすると、ResultSetも消滅してしまっています。

こういう場合は、取得直後に、なにか別のクラス変数などに移し変えるのが正しいのでしょうか?
ただ、そうなると、私の勝手な考えですが必要な列分の配列変数が必要なのでは?と、思ってしまっていて、
そうなると、ナンセンスだな・・・・と思っています。

ほかに何か良いやり方はあるのでしょうか?

それとも、そもそも、DB接続の専用クラスというものはJavaに必要なのでしょうか?
(上記のC#の考えでいけば、間のWebサーバーとAPサーバーが不要?)

よろしくお願いします。

A 回答 (5件)

ConnectionやStatementをcloseするなら、ResultSetを配列変数に格納するしかないです。

この回答への補足

もし、配列変数に格納したくない場合は、ResultSetを使用したメソッド内で、ResultSet内のデータを使用しないと
いけないんでしょうか?
(finallyでcloseしたいので)

補足日時:2010/11/26 16:37
    • good
    • 1
この回答へのお礼

なんとか、自分で納得できるようになるような構造でresultSetを
使用することが出来ました。
ありがとうございました。

お礼日時:2010/11/29 17:21

Mapは例で書いただけだから


HashMapでも何でも
好きなコレクションを使えば良いわよ。
    • good
    • 0
この回答へのお礼

なんとか、自分で納得できるようになるような構造でresultSetを
使用することが出来ました。
ありがとうございました。

お礼日時:2010/11/29 17:22

>Map recodeMap = new Map();


Mapはインターフェースなのでインスタンス化できません。

Map recodeMap = new HashMap();
とすればいいのではないでしょうか。
    • good
    • 0
この回答へのお礼

なんとか、自分で納得できるようになるような構造でresultSetを
使用することが出来ました。
ありがとうございました。

お礼日時:2010/11/29 17:21

ResultSetはデータベースの検索結果へのマッピングなの。


だからStatementやConnectionをcloseすると
マッピング情報も参照できなくなってしまうのよ。

よくやるのは共通部品で
List resultList = new List();
while(resultSet.next() {
Map recodeMap = new Map();
recodeMap("カラム", resultSet.getObject("カラム");
resultList.add(recodeMap);
}
こんな風にしていったん格納しちゃう方法ね。
各処理で実装するならその検索専用のVOを作ることになるわ。

この回答への補足

試しにコーディングしてみたんですが

Map recodeMap = new Map();

というところで下記のエラーが出てしまいます。
「型 Map のインスタンスを生成できません」

調べてみても良い答えが見つかりませんでした。

何か、解決方法ってありますか?

補足日時:2010/11/26 17:30
    • good
    • 0
この回答へのお礼

なんとか、自分で納得できるようになるような構造でresultSetを
使用することが出来ました。
ありがとうございました。

お礼日時:2010/11/29 17:21

それぞれの言語の考え方なので、JavaのResultSetがいいとか悪いとか言ってもどうしようもないと。


その言語で可能なことをするしかないです。

この回答への補足

すいません。

要は、ActionクラスにSQLを記述してもいいのか?という事なんですが・・・

補足日時:2010/11/26 15:13
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

ということは、必要な列分だけ配列変数を作成というのが、javaでのResultSetの中身を保持し続ける方法?ということに
なるんでしょうか?

お礼日時:2010/11/26 14:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!