<エラーメッセージの内容>
ORA-01858: 数値を指定する箇所に数値以外の文字が指定されています
開発言語は、java,oracle10g express editionです
スケジュールを登録する画面のところの日付のインサートで失敗します。「→」の部分です。
<以下のSQLをSQL/PLUSで実行するとうまくいきます>
insert into schedule values(1, 1, '予定1', '予定1です', TO_DATE('2009-06-01 10:00','YYYY/MM/DD HH24:MI:SS') , TO_DATE('2009-06-01 12:00','YYYY/MM/DD HH24:MI:SS'), 'A社', '予定1のコメントです。',1);
<問題のソースコード>
* スケジュール情報をデータベースに新規保存する
public void create(Schedule schedule) {
String sql =
"insert into "
+ SCHEDULE_TABLE_NAME
+ " (id, user_id,subject,content, start_time, end_time, place, comment1, is_publish) values(?,?,?,?,?,?,?,?,?)";
Connection con = null;
try {
con = createConnection();
con.setAutoCommit(false);
int id = getNextId(con, SCHEDULE_TABLE_NAME);
PreparedStatement stmt = con.prepareStatement(sql);
→stmt.setString(5,toString(schedule.getStartTime()));
→stmt.setString(6, toString(schedule.getEndTime()));
* 日付を文字列表現(yyyy-MM-dd HH:mm)に変換する
private String toString(java.util.Date date) {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm");
→return "TO_DATE('"+"'"+sd.format(date)+"'"+",'YYYY/MM/DD HH24:MI:SS'"+")";
}
ネット、本などでいろいろ調べましたが、わからなかったので、ヒントになることでもいいので、ご教授よろしくお願いします。
No.2ベストアンサー
- 回答日時:
パラメータをセットされたSQLは以下のようになってしまいます。
insert into schedule values(1, 1, '予定1', '予定1です', 'TO_DATE(''2009-06-01 10:00'',''YYYY/MM/DD HH24:MI:SS'')' , 'TO_DATE(''2009-06-01 12:00'',''YYYY/MM/DD HH24:MI:SS'')', 'A社', '予定1のコメントです。',1);
つまりTO_DATE(・・・)が文字列として扱われてしまいます。
ですのでNo1の方の方法の「PreparedStatement#setTimestamp」を利用するか、
String sql = "insert into " + SCHEDULE_TABLE_NAME + " (id, user_id,subject,content, start_time, end_time, place, comment1, is_publish) values(?,?,?,?,?,TO_DATE(?,'YYYY/MM/DD HH24:MI:SS'),TO_DATE(?,'YYYY/MM/DD HH24:MI:SS'),?,?)";
にして、toString関数でsd.formatの値を返せばいけるような気がします。
sh_hiroseさんに教えていただいたとおり、うまくいきました。
ありがとうございました。また、ご質問などがありましたら、
そのときはよろしくお願いします。本当に助かりました。
ありがとうございました。
No.1
- 回答日時:
java.sql.Timestamp と
PreparedStatement#setTimestamp(int parameterIndex, Timestamp x);
を組み合わせて使ってみるとどうですか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL SQLについて質問です。 SELECT TO_CHAR(TO_DATE('90-10-08.'YY- 4 2022/05/13 20:55
- JavaScript gasについて 1 2022/05/31 21:51
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 09:24
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/01/23 17:13
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Access(アクセス) エクセルのVBAについて教えてください。 4 2023/01/21 10:21
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- MySQL ある時間以内の利用者の抽出について 3 2022/03/26 11:15
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
TO_DATE関数について
Oracle
-
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
日付書式に変換でこまっています!
Oracle
-
-
4
Statement ignored というエラー
Oracle
-
5
Oracle 2つのDate型の値の差を「分」で取得したい
その他(データベース)
-
6
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
7
異なるスキーマからデータを抽出するには?oracl、PL/SQL
Oracle
-
8
データを削除しても表領域の使用率が減りません
Oracle
-
9
SELECTで1件のみ取得するには?
Oracle
-
10
ORA-01843: 指定した月が無効です。エラー
Oracle
-
11
特定条件でWHERE句の条件を変更したい
SQL Server
-
12
TO_CHARでのゼロ非表示について
Oracle
-
13
PL/SQLのコンパイルエラーについて(ignored)
Oracle
-
14
DELETE文でFROM句を省略した場合
その他(データベース)
-
15
PL/SQLで@ファイル名が反応しません
Oracle
-
16
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
17
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
18
SQLでSUMなどの関数でデータが無い時に0を返したい。
Oracle
-
19
変数が選択リストにありません
Oracle
-
20
SQLPLUSで結果を画面に表示しない
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
C# ListBoxのインデックスの値...
-
配列にnullを代入すると、null...
-
getStringの値がNULLの時の処理
-
Java配列でNullPointerExceptio...
-
Tomcatを再起動するとエラーが...
-
入力された文字列の制限
-
C#でラジオボタンとコンボボッ...
-
逆コンパイルの見方について(...
-
JSPで複数のSQL実行につ...
-
逆コンパイルの見方について(...
-
gas カレンダー祭日設定でエラー
-
BOOL値を逆にしたい
-
例外でBeanUtils.populateが、...
-
eclipseでoracle接続時のエラー...
-
Log4jで機能毎に別ファイルへ出...
-
flush()とclose()について
-
C言語のポインターに関する警告
-
IF関数でEmpty値を設定する方法。
-
javaで質問です。 文字列2023/2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
配列にnullを代入すると、null...
-
Java配列でNullPointerExceptio...
-
BOOL値を逆にしたい
-
getStringの値がNULLの時の処理
-
C# ListBoxのインデックスの値...
-
eclipseでoracle接続時のエラー...
-
gas カレンダー祭日設定でエラー
-
Javascript エラーメッセージが...
-
java 引数 戻り値のあるメソッド
-
C#でラジオボタンとコンボボッ...
-
MySQLのテーブル名を変数に置い...
-
jsp/Servletの動的に増えるフォ...
-
例外でBeanUtils.populateが、...
-
Stringを返す getText()メソッ...
-
JSPで複数のSQL実行につ...
-
逆コンパイルの見方について(...
-
if文を通らない
-
この世で連日正規表現について...
-
逆コンパイルの見方について(...
おすすめ情報