Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

selectで値がとれない場合に処理を追加したい

はじめまして、勉強3日目の超初心者です。
以下のクエリーを動かしたときに、値を取得できなかった場合という処理を追加したいのですが、方法がわからなくて、申し訳ないですけど教えてください。


----------------------------------------------
import java.sql.*;

public class JDBC_Test {

    public static void main (String args[])  {

        Connection con = null;
        Statement  smt = null;
        ResultSet  rst = null;
        
        // Oracle JDBC Driverのロード
        try{
            Class.forName("oracle.jdbc.driver.OracleDriver");
        }catch(ClassNotFoundException ce){
            return;
        }
        
        /* データベースへ接続 */
        try{

            con = DriverManager.getConnection (
                     "jdbc:oracle:thin:@localhost:1521:jdbcsample",
                     "usid", 
                     "pswd");

            // ステートメントを作成
            smt = con.createStatement(); 
    
            // 問合せの実行
            rst = smt.executeQuery("select USER_ID, CORP_NAME from USER_TABLE");
    
            // 問合せ結果の表示
            while ( rst.next() ) {
                 // 列番号による指定
                System.out.println(rst.getString("USER_ID") + "\t" + rst.getString("CORP_NAME"));
            }
    
            // 結果セットをクローズ
            rst.close(); 

            // ステートメントをクローズ
            smt.close(); 
            
            //接続をクローズ
            con.close();
            
        }catch(Exception e){
            e.printStackTrace();
        }
        
    }

}

5

回答

10699

閲覧

5件の回答

評価

0

値が取れなかったら、何が返ってきますか?

評価

0

レスありがとうございます。
何も値は返ってこないです。
セレクトできる場合、できない場合で
別処理をおこないたいんですが・・・

評価

0

>何も値は返ってこないです
本当に?

>rst.next() 
これが何を返しているのかは解りますか?

評価

0

補足:
executeQuery()は、「何も返ってこない=null」
ことは、"ありえません"(APIを読む限りでは)。

API、読んでますか?
Statement#executeQuery

http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/sql/Statement.html#executeQuery(java.lang.String)


仮に若しnullが返ってきていたら、
rst.next() ←NullPointerExceptionですね。


上記の私の発言で何か判らないことがあれば仰ってください。(間違ってる可能性も0じゃないので気を付けて^^;

評価

0

コロさん

ありがとうございます、API読んで確認します

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。