- PR -

executeUpdateを使ったinsert文でDATEが作成できません

1
投稿者投稿内容
未記入
会議室デビュー日: 2004/06/03
投稿数: 3
投稿日時: 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文でエラーが発生しているとこまでたどり着けたのですが
どうしてでエラーなのかわかりません
アドバイスしていただけないでしょうか?
カルキヌキ
会議室デビュー日: 2003/09/22
投稿数: 16
投稿日時: 2004-06-03 12:06
どうしてエラーなのかはOracleが教えてくれるはずですよ。
スタックトレースは見ましたか?
ぼんじぃ
ベテラン
会議室デビュー日: 2004/05/21
投稿数: 70
投稿日時: 2004-06-03 13:08
エラーの原因はわかりませんがPreparedStatementを使っても同じ結果になりますか?
PreparedStatementならデータ型等も適した形に変換してくれます。
未記入
会議室デビュー日: 2004/06/03
投稿数: 3
投稿日時: 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
投稿数: 3
投稿日時: 2004-06-03 13:45
すいません上記のソースで
nyusyabi = " TO_DATE('"+ nyusyabi + "','YYYYMMDD') ";
です。
これがなきゃ意味不明ですねw
1

スキルアップ/キャリアアップ(JOB@IT)