• 締切済み

SELECT-INTO文の実行につきまして

JAVAのSERVLETでテーブルを作成するSELECT-INTO文を 実行したいのですが、いままで見たSELECT文は、Resultsetを用いてレコードを一件ずつ処理しているものでした。Resultsetで受けずにSQL文を実行する方法は無いのでしょうか? よろしくお願いいたします。

  • Java
  • 回答数2
  • ありがとう数4

みんなの回答

noname#16216
noname#16216
回答No.2

サーブレットでも通常のJavaプログラムでもデータベース関連の処理をしたければJDBCを使用します。 質問についてなのですが、具体的にどうしたいのかいまいちよく分かりません。 ResultSetで受けずにSQL文を実行したいということですが、単純に戻り値を無視するようなコーディングにするわけにはいかないのでしょうか? Statement state = connection.createStatement(); state.executeQuery(SQL文); と記述してやれば、指定したSQL文を単純に実行しますが。。。 これではダメということでしょうか?

mem_masa
質問者

お礼

質問する際の配慮が足らず申し訳ありませんでした。 私本人が戻り値を無視するコーディング方法を知らなかったので質問をしました。 お答えいただきありがとうございました。

  • ct27
  • ベストアンサー率62% (48/77)
回答No.1

servletのことはよくわかりませんが、少なくともJDBCを使用して戻ってくる 結果セットはResultSet(場合によってはResultSetMetaData)で受ける以外 ないと思うのですが・・・ レスポンスの問題でこのようなご質問をされていると思うのですが、その部分 以外でレスポンスをあげることをご検討されることをお勧めします。(たぶん)

mem_masa
質問者

お礼

質問する際の配慮が足らず申し訳ありませんでした。 単に戻り値を無視したかっただけなんです。 丁寧にお答えいただきありがとうございました。

関連するQ&A

  • 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について

    あるバッチファイルからSQL文を実行します。 SQLの内容を簡単に申し上げますと テーブルAにレコードが1件存在したときは、 テーブルBを削除する。 テーブルAにレコードが2件存在したときは、 何もしない。 バッチファイルには、後続の処理もあるのですが 割愛します。 ここで質問なのですが、レコードが2件存在した とき、バッチの後続処理を実行させずに、そこで 処理終了とさせたいのですが、方法はあります でしょうか? SQL内でバッチのエラーレベルのようなものを 渡せたら、解決できそうなのですが、方法が わかりません。 説明があいまいでわかりにくいかもしれませんが 何か方法がありましたら、教えてください。

  • 円マークのフィールドに対してSELECT文が実行できない

    いつも参考にさせていただいております。 DB2(AS400)に対してJDBC経由で、円マーク(\)をんだフィールドに対してSELECT文を実行しようとすると、エラーになってしまいます。 フィールドの前にもう一つ円マークを付加して、フィールド名をダブルコーテーションでくくってみたのですが、テーブルには該当するフィールドがないというエラーになってしまいます。 以下のようなJavaのコードになります。 String sqlStr = "SELECT " + "\"" + "\\COL1" + "\"" + " FROM TABLE1"; 上記からは以下のSQLが作成されます。 SELECT "\COL1" FROM TABLE1 このSQL文を、DB2のツールで実行すると問題なく処理されて、値が返ってきます。 Java(JDBC経由)の場合は、どのように記述したら宜しいのでしょうか? 宜しくお願い致します。

  • プログラム内のINSERT文が実行されない。

    CGIのソース内でINSERT INTO テーブル名 SELECT文を使って行追加しているのですが、処理がエラーの場合の処理が動いてしまい実行されません。 ただ、同じSQL文をphpMyAdminのデータベースサーバーのSQLにコピペして実行すると問題なく行追加されました。 なので、問題があるとしたらそのプログラムだと思うのですが、原因がつかめません。 SQL文を変数に格納してから実行させてその結果によってエラーメッセージを出す処理は以下の通りです。 $sql = (INSERT INTO テーブル名 SELECT ****** FROM ***** WHERE ******) $ins_result = $db->prepare($sql); $num = $ins_result->execute; if ( not $num ) { &db_rollback; &db_disconnect; &msgout("エラー1","エラーメッセージ","システムエラー"); } すでに作られているプログラムを修正しています。ちなみに、そのプログラムを作った人はすでに現場にはいませんので聞けません。 msgout内に$ins_resultと$numを表示してみましたら、前者は「DBI::st=HASH(0x9f38560)」で、後者は何も入っていないつまり空でした。 【if ( not $num )】のif文も意味が分からないです。私の知識から解読すると $numの否定が真だったらカッコ内の処理を実行するという意味だと思いますが、$numは空なので空でないことが真だったらとなりますが、どういう意味なんでしょうか? プログラム内のSQL文がなぜ実行できなかったのかその原因を調べることができるツールとかあれば試すことができるのですが、データベースで実行して成功したところを考えるとあまり意味ないかもしれませんが。 過去カラム数が違ってたとか、追加データの長さが範囲外だったとかが原因だったことがありましたが今回はそのどちらでもなさそうです。

    • ベストアンサー
    • CGI
  • 【初歩】SELECT文で思うような照会結果が得られない

    テーブル MYTABLEに、EMAILとPWというフィールドに、それぞれ、 name@example.jp、x6wvGZb7MZpBwMtQという文字列がINSERTされています。 これに対し、 SELECT * FROM `MYTABLE` WHERE `EMAIL` = 'name@example.jp' AND `PW` = 'x6wvGZb7MZpBwMtQ' を実行しても、レコードが返ってこないのですが、なぜでしょうか。 なお、 SELECT * FROM `MYTABLE` WHERE `EMAIL` = 'name@example.jp' なら1件返ってきますが、 SELECT * FROM `MYTABLE` WHERE `PW` = 'x6wvGZb7MZpBwMtQ' だと返ってきません。 シンプルな話なので、はじめはSQL文を手打ちしていてダメでした。 なので、phpMyAdminのGUIからSQL文を発行してみたら 一字一句同じSQL文が吐き出されましたし、照会結果も同じでした。

    • ベストアンサー
    • MySQL
  • 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実行中にINSERTしたい

    テーブルTに対し、データ抽出に数分かかるようなSELECT文を実行しているとして、 そのSELECT文の実行中にInsertしたらどのような挙動になるでしょうか。 (INSERTした瞬間にエラーが発生する?) また、SELECT文の実行中にInsertしたら、 「SELECT文が実行終了するまで待って、そのあとにINSERTする」 という動きにしたい場合、どのように設定(or SQLを書けば?)すればよいでしょうか。

    • ベストアンサー
    • MySQL
  • レコードセットの値を一気にDBに

    access2007で開発しています。 レコードセットのデータをDBのテーブルに一気にいれる方法はないのでしょうか? 調べたところレコードセットをMOVENEXTで一件ずつ読込み、インサート文をなげている例はあったのですが、一気にいれる方法は見当たりませんでした。 さらにいうと元々はSQLで insert into テーブル1(・・・) select ・・・from テーブル2 としたかったのですが、executeすると´3065´選択クエリを実行できません´のエラーとなってしまいました。 すいませんが、ご教唆ねがいます。

  • Oracleでのスクリプト実行について

    SQL*Plusで作成した1つの×××.sqlファイル複数のSQL文があります。このSQLを1つづつ確認しながら実行 する事が可能でしょうか? 例えば、以下の×××.sqlファイルでselect文とinsert文 の間で確認をしたいのですが.....。 select ename from emp; insert into (empno) values(10); よろしくお願いします。

  • SQLの実行速度

    XMLを解析し、テーブル内を検索するシステムを 作成しているのですが、 ストアドプロシージャ内でSQL文を作成し実行するのと ASP.NET などからSQL文を作成して実行するのとでは、 実行速度に差はでるのものなのでしょうか。 ・SQLServer 2005 ・SELECT の対象テーブルは2~3つのテーブルをINNER JOIN して使う。 ・検索対象の列は実行のたびに異なる。 よろしくおねがいします。