• 締切済み

rsには何が入っているかを確認する方法は?

rs=objPs.executeQuery();のrsには何が入っているかを確認する方法をお教えください。 SQL文の結果の値を利用しようとしています。 rs=objPs.executeQuery(); の中には、何がセットされるのでしょうか?

みんなの回答

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.3

rsを利用するためにrsに何が入っているのかを知る必要がありません。 rsはRecordSetインターフェースを実装しているので、RecordSetインターフェースの仕様がわかればrsを使用することができます。 これはJavaにおいて(Javaに限ったことではないですが)基本的な考え方なので覚えておいてください。

全文を見る
すると、全ての回答が全文表示されます。
  • osumitan
  • ベストアンサー率33% (102/307)
回答No.2

objPsはjava.sql.Statementということでしょうか? executeQueryが、java.sql.Statement#executeQuery(String sql)なら、 戻り値のrsは、java.sql.ResultSetということになりますね。 executeQueryの引数(String)に入ったSQL文(SELECT文)を実行し、 得られた検索結果が格納されているクラスになります。 「rsには何が入っているか」というのが 検索結果を取り出したいという意味であれば、以下のようにします。 (クラス名や列名はあくまでサンプルです)   public java.util.ArrayList selectUser(java.sql.StatementobjPs, String sql) {     java.sql.ResultSet rs = objPs.executeQuery(sql);     java.util.ArrayList list = new java.util.ArrayList();     try {       while(rs.next() == true) {         UserData ud = new UserData();         ud.setUserNo(rs.getString("USERNO"));         ud.setUserName(rs.getString("USERNAME"));         ud.setAge(rs.getInt("AGE"));         list.add(ud);       }     }     catch(java.sql.SQLException e) {       e.printStackTrace();     }   } 「rsには何が入っているか」というのが どういう型のオブジェクトが入っているのかということなら、 System.out.println("rs=" + rs); としてもいいですし(標準出力にクラス名が表示されます)、 String className = rs.getClass().getName(); とすれば、クラス名を文字列として取得できます。

全文を見る
すると、全ての回答が全文表示されます。
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんばんは。 rs、objPsの型が何かわかりませんが、 rsまたはobjPsクラス型をJavaDocで参照してみては いかがでしょうか。 使用できるメソッド等がわかります。 その中に、見たい情報を出力するメソッドが 見つかるかもしれません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • sqlの結果のrsからフィード数を得る方法

    sql = "select a,b from t" Set rs = dbc.Execute(sql) ここでは2が得られる。 sql = "select a,b,c,d,e from t" Set rs = dbc.Execute(sql) ここでは5が得られる。 というのやりたいのですが、2や5をrsから得られないでしょうか? sqlのa,b,c,d,eの部分が固定ではなくaspプログラムで動的に作るのでrs.Fields()ではなくてrs()で取得しようとしています。

  • SQL文の実行速度の確認方法

    Oracle SQL*Plusにて、SQL文の開始から値取得までの実行速度の確認をしたいと考えております。 秒単位だけでもOKですので、どなたか確認方法について教えて頂きたくお願いします。

  • WebSphere/DB2/ResultSet close/Exception

    WebSphereを使って、Listenerで取得したデータソースを利用していますが、 String sql1 = "SELECT A1 FROM TEST1"; String sql2 = "SELECT B2 FROM TEST2 WHERE B1 = ?"; Connection conn = datasource.getConnection(); PreparedStatement ps1 = conn.preparedStatement(sql1); ResultSet rs1 = ps1.executeQuery(); while(rs1.next()){ PreparedStatement ps2 = conn.preparedStatement(sql2); ps2.setString(1,rs1.getString("A1")); ResultSet rs2 = ps2.executeQuery(); ps2.close(); } このロジックで、ps2をクローズすると、ps1で取得したResultSet rs1がクローズされるというExceptionが発生してしまいます。 (ループして戻ったときにrs1.next()でexceptionが起こる) なにか対処方法があるかご存知の方いらっしゃいましたら、よろしくお願いいたします。

    • ベストアンサー
    • Java
  • getStringの値がNULLの時の処理

    DB:SQL Server 2005 JDBCを使ってデータベースへアクセスし、SQL発行して結果をResultsetに格納、getStringで各項目の値を取得するところまでは確認できています。 外部結合したテーブルを参照していおり、getString()でnullを取得した場合にjava.lang.NullPointerExceptionが返ってエラーとなってしまいます。 回避策はあるのでしょうか? 抜粋したソースを下記に記します。 -- test.jsp -- <% ResultSet rs = db.executeQuery(sql); while(rs.next()){ String disp_object = rs.getString("object"); if(disp_object == null) disp_object="---"; } %> <tr>Object</tr> <tr><%=disp_object%></tr>

    • ベストアンサー
    • Java
  • JavaでのSQL文の実行について

    JavaでのSQL文の実行について Class.forName("org.gjt.mm.mysql.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost/testdb?useUnicode=true&characterEncoding=UTF-8", "id", "pw"); stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); sql = new StringBuffer(); sql.append("set @i:=0;select id,@i:=@i+1 as 'num',name,kana from table order by kana"); rs = stmt.executeQuery(sql.toString()); ResultSetMetaData rsmd = null; rsmd = rs.getMetaData(); tbl = new ArrayList<ArrayList>(); //検索結果 取得 if(rs.next()){ ・ ・ ・ ・ といった形でSQL文を実行してるのですが、うまくいきません。 MySQLのバージョンは5.1です。MySQL上でこのSQLを実行するとしっかり結果は取得できたので、Javaプログラムの書き方に問題があると思うのですが、上記のように一度で二つのSQL文を実行することはできないのでしょうか。単一のSQLの実行は正常にできています。ユーザ変数は取得された結果一覧に行番号を付与するために使っています。 2回に分けてこのSQLが実行できるのであれば、その方法でも良いので教えてもらいたいです。 つたない説明で申し訳ないですが、よろしくお願いします。

    • ベストアンサー
    • Java
  • SELECT文を発行して、ACCESSより取得する方法

    既存のプログラムを元に、 以下のようなソースを作成したのですが、 取得出来ませんでした。 参照設定やパスの設定、SQL文は正しいです。 どこがマズイのでしょうか? アドバイスをお願い致します。 Dim db  As DAO.Database Dim rs  As DAO.Recordset Dim SQL As String 'データベース接続 Set db = OpenDatabase("DBのパス") 'データ検索SQL SQL = "" SQL = " SELECT文 " 'ACCESSより取得 Set rs = db.OpenRecordset(SQL) db.Close rs.Close

  • 権限の確認方法

    いつも参考にさせていただいています。 SQL Server Management Studioにおいて、SQL文であるユーザにCREATE TABLE権限とCREATE PROCEDURE権限を与えました。 が、しかしどこでこの権限が与えられているか確認する方法がわからなく困っております。 ご存知の方よろしくお願いいたします。 SQL Server 2005 Enterpriseです。

  • サブミットへ値を入れたいのですが・・・

    プログラミングを始めて3ヶ月になります。 只今、javaで作品をつくっております。 そこで、プルダウンの中にDBからとってきた値を入れることができません。 何が不足しているのかよく分からなくて・・・ 初歩的な質問で申し訳ございませんが、どなたかご教授頂けたらと思います。宜しくお願いします。 html += "職業"; sql = "select job_nm from t13_job order by job_id"; rs = statement.executeQuery(sql); html += "<SELECT name=\"Job\">"; while(rs.next()) {  html += "<OPTION value =" + rs.getString("job_nm"); } html += "</OPTION></SELECT><BR><BR>";

  • Oracle SQL実行時間について

    Oracle初心者です。 あるテーブル(レコード数:100万件程度)に対してSelectするSQLの実行時間を、Oracleのset timing on, set autotrace onlyで計測しました。 結果は1000ms程度だったのですが、 同じSQL文を実行するプログラム(java)を作成し、pstmt.executequery()してresultsetからデータをgetするまでの時間をログに出力させたところ、400ms程度でした。 プログラムの性能目標として、set timing on の値を設定していたため、実際の結果(javaプログラムが出力した処理時間)の評価に困っています。 差がでる原因をご教示いただけませんでしょうか。 宜しくお願いします。

  • 初歩的なSQLですが・・・

    私の環境はOS:Xp      ACCESS2000です。 宜しくお願いします 今AccessVBAで作業をしているのですが、 Dim ws As DAO.Workspace Dim DB As DAO.Database Dim rs As DAO.Recordset Dim sql As String Set ws = DBEngine.Workspaces(0) Set DB = ws.Databases(0) sql = "select MAX(銀行コード) from 銀行テーブル ;" Set rs = DB.OpenRecordset(sql) Me.合計 = rs このSQL文で銀行テーブルに入っている銀行コードの最大値を取得したいのですが、取得した後どのように記述したら「rs」から値を引っ張り出せるのでしょうか? 宜しくお願いします。

このQ&Aのポイント
  • 二次元コードリーダーで読み取ったデータをプリンターから印刷することは可能でしょうか。
  • 以前Brotherにお問い合わせしたところ、一次元コードなら印刷できることがわかりましたが、二次元コードでも同様に印刷できるのかを確認したいと思っています。
  • お問い合わせの時間が過ぎてしまったので、こちらで質問させていただきます。
回答を見る

専門家に質問してみよう