我必须通过传递值从java类执行存储过程。但是当我为此尝试时,我收到了错误
public class OperatorBillCorrection {
public static void main(String args[]) throws SQLException {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection(
"jdbc:mysql://localhost:3306/webill_operator_2016","root","root123");
String opCode="KL04C019" ;
for(int i=0;i<=12;i++) {
String dt= "2015-"+i+"-1" ;
PreparedStatement stmts=con.prepareStatement("call sp_getOperatorCollection(?,?)") ;
stmts.setString(1,opCode);
stmts.setString(2,dt);
stmts.execute();
}
for(int i=0;i<=2;i++) {
String dt= "2016-"+i+"-1" ;
PreparedStatement stmts=con.prepareStatement("call sp_getOperatorCollection(?,?)") ;
stmts.setString(1,opCode);
stmts.setString(2,dt);
stmts.execute();
}
System.out.println("Completed") ;
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
这是我的代码。
stmt=con.createStatement(); stmt.execute("call sp_getOperatorCollection('KL04C019','2015-09-01')");
当我使用Statement {{1}}而不是PreparedStatement
时,它正在工作答案 0 :(得分:1)
使用java.sql.Date而不是java.util.date。
java.util.Date date = formatter.parse(dateString);
java.sql.Date dt = new java.sql.Date(date.getTime());