私のアプリケーションでは、日付値(文字列として)をパラメーターとしてサーブレットに渡しました。サーブレットコードでは、文字列を「2013-02-05」(yyyy-MM-dd)としてSQL日付に変換しました。
例:dat=" 05/02/2013"はsqlDate="2013-02-05"に変換されます。私のサーブレットコードは
dat= request.getParameter("dat");
//dat="05/02/2013";
try
{
java.util.Date date=new SimpleDateFormat("dd/MM/yy").parse(dat);
//out.println(date);
sqlDate = new java.sql.Date(date.getTime());
//out.println(sqlDate);
}
catch(Exception e)
{
}
if(div_code!=null)
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
java.sql.Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@xxx.xxx.x.xxx:xxx:pdsm", "test", "test");
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("insert into offer1 values('"+r_code+"','"+v_name+"','"+vcode+"','"+div_code+"','"+sec_code+"','"+extent+"','"+phone+"','"+sqlDate+"','"+loan+"','"+seeds+"','"+offerno+"','"+loc+"')");
conn.setAutoCommit(true);
out.println("data inserted");
}catch(Exception e)
{
out.println(e);
}
}
これをAndroidアプリケーションから呼び出すと、「ORA-01861:リテラルがフォーマット文字列と一致しません」というエラーが表示されます。私が使用したフォーマットは、サンプル入力でテストしたときに正しい結果を示しています。しかし、データは挿入されませんでした。
私のコードの問題は何ですか?なぜこのエラーが発生するのですか?さらに変換する必要がありますか?はいの場合、どのように?
また、サーブレットでpl / sql関数(to_date())を使用できると誰かが説明していますか?日付を変換しやすいので
編集:変更されたコード:
String query="insert into offer1('RCODE','OFFERNO','DAT') values(?,?,?)";
PreparedStatement ps=conn.prepareStatement(query);
ps.setString(1,r_code);
ps.setString(2,offerno);
ps.setDate(3,sqlDate);
ResultSet rs=ps.executeQuery();
out.println("data inserted");