質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

解決済

データベースのテーブルで、Date型の項目に対し、JavaのDate型の変数をINSERTをしたい。

ystes123
MaskedRider-Sys

総合スコア2

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1回答

0リアクション

0クリップ

279閲覧

投稿2022/09/28 15:00

実現したいこと

Java言語でSQL作成。
データベース(Oracle)のテーブルで、Date型の項目に対し、
JavaのDate型の変数をINSERTをしたい。

ソースコード(イメージ)

import java.util.Date; : : public static void test1(){ int renban = (連番メソッド); Date date = new Date(); String name = "ABC"; try{ sql = "INSERT INTO TABLE_A ( UKETSUKENO, UKETSUKEDATE, UKETSUKENAME …)"+ "VALUES (" + renban+ ", " + date + ",'" + name + "', '" + …); : : (SQL実行処理) } catch { : : }

発生している問題・エラーメッセージ

上記例や、VALUESのdateの前後にシングルクォーテーションを追加したり、
TO_DATE(date, 'yyyy-mm-dd hh24:MI:ss')やTO_DATE(’date’, 'yyyy-mm-dd hh24:MI:ss')で試したところ、下記のようなエラーが出ます。
(どれがどれに紐づくか覚えてなくてすみません。。。)

 ・ORA-01861: リテラルが書式文字列と一致しません
・ORA-01841: (周)年は-4713と+9999の間の0以外の数字を指定する必要があります

試したこと

date型変数の値をINSERTのVALUE値にすることって可能ですよね?
お手数ですが、記載方法を教えてください。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

jimbe

2022/09/28 15:42

まず、文字列編集でデータを含む SQL 文を作成することを止めたほうが良いです。PreparedStatement を利用してください。
m.ts10806

2022/09/29 01:25

SQLに直に入れたいなら文字列にフォーマットするしかないでしょうしね。 オブジェクトそのままは突っ込めません。SQLとはいってもパラメータも何もセットしてないなら Javaにとっては単なる文字列ですから。OracleDBに対し直に実行して通るSQLをそのまま投入するならできますが、先に指摘されてるようにSQLインジェクションの脆弱性もあるので値をSQL文字列として突っ込むのは推奨されていません。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。