-1

テーブルに複数の日付値を挿入しようとするとエラーが発生しますが、1 つの日付値を挿入しようとすると正常に実行されます。

2 つ以上の日付値を使用したときに発生したエラーは次のとおりです。

java.sql.SQLException: [MySQL][ODBC 5.1 Driver][mysqld-5.5.15]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'From) values(100,1,_binary'2011-09-17',_binary'2011-09-18')' at line 1 
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source) 
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source) 
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(Unknown Source) 
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(Unknown Source) 
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(Unknown Source) 
at SampleProg.InsertDate(SampleProg.java:37) 
at SampleProg.main(SampleProg.java:65) 

私のソースコードは次のとおりです。

import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.io.IOException; 
import java.sql.*; 


public class SampleProg { 
public void InsertDate(int ref,int id,Date d1,Date d2) 
{   
Connection con=null; 
PreparedStatement ps=null; 
String query=null; 
java.sql.Date dd1=null,dd2=null; 


try 
{ 

query="insert into new_table (Ref_No,Emp_Id,Doapp,From) values(?,?,?,?)"; 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
con=DriverManager.getConnection("jdbc:odbc:date","root","1234"); 
ps=con.prepareStatement(query); 

ps.setInt(1, ref); 
ps.setInt(2,id); 
ps.setDate(3,new java.sql.Date(d1.getTime()) ); 
ps.setDate(4, new java.sql.Date(d2.getTime())); 
int i=ps.executeUpdate(); 

} 
catch(Exception e) 
{ 
e.printStackTrace(); 
} 
} 
public static void main(String args[]) 
{ 
Date d1=null; 
Date d2=null; 


int ref=100; 
int empid=1; 
String date1="2011-09-17"; 
String date2="2011-09-18"; 

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 
try { 
d1=sdf.parse(s1); 
d2=sdf.parse(s2); 

} catch (ParseException e) { 

e.printStackTrace(); 
} 
SampleProg dd=new SampleProg(); 
dd.InsertDate(ref,empid,d1,d2); 
} 

}
4

1 に答える 1

7

FROMMySQL の予約済みキーワードです。使用するにはエスケープする必要があります。

INSERT INTO new_table(Ref_No,Emp_Id,Doapp,`From`) VALUES (?,?,?,?)

テーブルを変更する時間がある場合は、将来の問題を回避するために、列名の名前を変更してください。

于 2013-04-05T12:29:59.417 に答える