代码如下:
//大量数据的插入需要分批执行
while(!statistics_start.equals(init_date_from)){
String statistics_end=DateTool.getTimeStringDayPlus(statistics_start, +1);
                  sql="insert into tb_request_month_temp   (requesttime,username,devnumber,modulename,devtype,version)
(select requesttime,username,devnumber,modulename,devtype,version 
from v_request where REQUESTTIME >= to_date(?,'yyyy-MM-dd HH24:mi:ss') AND REQUESTTIME < to_date(?,'yyyy-MM-dd HH24:mi:ss'))";PreparedStatement pstate=connDB.prepareStatement(sql);
try {
pstate.setString(1, statistics_start);
pstate.setString(2, statistics_end);
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println(sql);
_log.info(sql);
try {
flag=pstate.executeUpdate();
System.out.println(flag);} catch (SQLException e) {
e.printStackTrace();
}
if(flag==-1)return false;
statistics_start=DateTool.getTimeStringDayPlus(statistics_start, +1);}执行这段代码,数据库没有数据,在数据库里执行打印出来的sql语句有数据,
有哪位高手能看出代码里的问题呢?为什么程序不能插入数据呢? 并且,flag打印是有值的SQL

解决方案 »

  1.   

    第一反应就是没有事务内commit
    flag=pstate.executeUpdate();
    的下面加上
    connDB.commit();或者你传入的参数不对where REQUESTTIME >= ?
    ?以setTimesStamp()的形式试试
      

  2.   

    我在flag=pstate.executeUpdate();
    的下面加上了connDB.getConnection().commit();
    结果数据库里依然没有数据,传入的参数打印出来没有问题,改成where REQUESTTIME >= ?
    ?以setTimesStamp()的形式,程序不通过,代码如下:
      

  3.   

    sql语句  
    :insert into test(name,pass)values('"+name+"','"+pass+"')
    String name=request.getParam("name");
    : select from test where name='"+name+"'