从java执行过程时出现JDBC连接错误

时间:2016-02-24 08:35:06

标签: java mysql stored-procedures prepared-statement

我必须通过传递值从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

时,它正在工作

1 个答案:

答案 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());