2013-04-05 47 views
-1

當我嘗試向表中插入多個日期值時出現錯誤,但當我嘗試使用一個日期值時,它會成功執行。插入多個日期時的java.sql.SQLException

我使用多於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); 
} 

} 
+2

難道是因爲您使用「from」作爲第二個日期的字段名稱嗎? – 2013-04-05 12:32:25

回答

7

FROM是MySQL的的保留關鍵字。它必須被轉義才能被使用。

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

如果你有時間來改變表,請更改列名的名稱,以避免將來出現問題。