- - PR -
executeUpdateを使ったinsert文でDATEが作成できません
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-06-03 11:29
EclipseとTomcatを使って「ID 苗字 名前 電話番号 入社日」の表をinsertしたいのですが、SQL*PLusでは実行できて、Eclipse、Tomcat上では実行できません。
以下ソースを載せます。 -------------------------------------------------------------------- //ここで入社日をDATE型に変換しています。 rs = stmt.executeQuery("SELECT TO_DATE('"+ nyusyabi + "','YYYYMMDD') from employee "); rs.next(); //ここでデート型変数nyusyabi2に入社日を代入しています。 Date nyusyabi2 = rs.getDate(1); //これが問題のSQL文です。 int i = stmt.executeUpdate("insert into employee(employee_id,first_name,second_name,telno,ENTRYDATE)" + " values('" +id + "','" + myouji + "','" + namae + "'," + phone +",'" + nyusyabi2 + "')"); ---------------------------------------------------------------- このSQL文をSystem.out.println();で表示させ、コピー貼り付けでSQL*Plusで実行させるとうまく行きます。 しかし、確実にこのSQL文でエラーが発生しているとこまでたどり着けたのですが どうしてでエラーなのかわかりません アドバイスしていただけないでしょうか? |
|
投稿日時: 2004-06-03 12:06
どうしてエラーなのかはOracleが教えてくれるはずですよ。
スタックトレースは見ましたか? |
|
投稿日時: 2004-06-03 13:08
エラーの原因はわかりませんがPreparedStatementを使っても同じ結果になりますか?
PreparedStatementならデータ型等も適した形に変換してくれます。 |
|
投稿日時: 2004-06-03 13:34
アドバイスどうもありがとうございます。
とりあえずソースが汚すぎましたのでちょっと改良してみました。 いちいちSELECT文でDATE型にしてからINSERTしなくても INSERT文の中でDATE型に変換できる事がわかりましたので実行してみました。 以下SQLソース -------------------------------------------- int i = stmt.executeUpdate("insert into employee(employee_id,first_name,second_name,telno,ENTRYDATE)" + " values('" +id + "','" + myouji + "','" + namae + "'," + phone + "," + nyusyabi +")" ); ----------------------------------------------- これ一つで型変換もinsertも一発でできるみたいです。 この文で実行したところ美味くできました。 原因は型変換がうまくできてなかったのかもしれません。 これから、原因を探ってみますが とりあえずうまくいったのでよかったです アドバイスどうもありがとうございました。 |
|
投稿日時: 2004-06-03 13:45
すいません上記のソースで
nyusyabi = " TO_DATE('"+ nyusyabi + "','YYYYMMDD') "; です。 これがなきゃ意味不明ですねw |
1
