OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

JDBCを使ってdate型へのINSERTはできますか?

  • すぐに回答を!
  • 質問No.154075
  • 閲覧数2186
  • ありがとう数2
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (2/2)

JDBCを使ってOracleへ接続し、DBへデータを挿入したいのですが、
日付型のデータがどうしてもうまく挿入できません。

jsp + Servlet + Bean で開発しています。

使っているテーブルは
CREATE TABLE USERS (
    USERID     VARCHAR2(10) NOT NULL,
    PASSWORD  VARCHAR2(10) NOT NULL,
    NAME      VARCHAR2(50) NULL,
    SEX       VARCHAR2(5)  NULL,
    BIRTHDAY   DATE       NULL,
    PRIMARY KEY (USERID, PASSWORD)
)
という風な型で、定義しています。

DBへのINSERT処理は、Beanで行っています。

以下のINSERT文を実行したのですが、うまくINSERTできませんでした。
String sqlQuery =
"INSERT INTO USERS (USERID, PASSWORD, NAME, SEX, BIRTHDAY)"
+ "VALUES ('use', 'pass', 'ナマエ', '女性', '1980/06/05')"
int numOfUpdate = statement.executeUpdate(sqlQuery);

ちなみに、この中のdate型で定義している「BIRTHDAY」を除いたINSERT文
String sqlQuery =
"INSERT INTO USERS (USERID, PASSWORD, NAME, SEX)"
+ "VALUES ('use', 'pass', 'ナマエ', '女性')"
int numOfUpdate = statement.executeUpdate(sqlQuery);
だとうまくINSERTできます。
sql*plusを使って直に書くと、両方うまくINSERTできました。

●その後に、「BIRTHDAY」をdate型からVARCHAR2(10)へ定義し直し、
 DBを作り直して実行した所、うまくINSERTできるようになりました。

なぜ「date型」だとINSERTできず、「VARCHAR2型」だとINSERTできるのか、
知っている方がおられましたら、ぜひ教えて頂きたいです。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル8

ベストアンサー率 44% (12/27)

始めましてDoubleです
"INSERT INTO USERS (USERID, PASSWORD, NAME, SEX, BIRTHDAY)"
+ "VALUES ('use', 'pass', 'ナマエ', '女性', '1980/06/05')"
この書き方だと'1980/06/05'の部分はテキストデータです
したがって
to_date('1980/06/05','YYYY/MM/DD')
と書き換えてあげれば大丈夫だと思います
試してみてください
お礼コメント
vaniraberry

お礼率 100% (2/2)

わかりやすい御回答ありがとうございました。
日付の部分を書き直した所、うまくINSERTできました。
あのままではテキストデータになってしまうのですね!
本当に助かりました!
投稿日時 - 2001-10-22 10:35:00
-PR-
-PR-
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ