我的代码是这么写的
PreparedStatement stat = null;
Date date = new Date();
SimpleDateFormat st = new SimpleDateFormat("yyyy-MM-dd");
String sql = "update articlereply set  content=?,replaytime=? where id=?";
try {
stat = conn.prepareStatement(sql);//说明 conn已经成功获取
stat.setString(1, articleReply.getContent());
stat.setString(2, st.format(date));
stat.setInt(3, articleReply.getId());
stat.executeUpdate();//标注
result =true;
}catche就不写了,主要是上面的问题,程序执行到标注行就不动了即debug调试到stat.executeUpdate();行就不动了,整个程序几乎是死掉一分钟,然后就不执行 result =true;直接跳转到finally{}块中去执行了,控制台也没有异常抛出,不知道是什么原因,我试了试后面加一句conn.commit();不起作用。
要说明的一点是 conn已经成功获取,不是数据库连接问题,后台没有异常抛出。

解决方案 »

  1.   

    数据库中replaytime是什么类型?如果是date类型的话,stat.setDate(2, st.format(date)); 
      

  2.   

    数据库死锁啦,把当前用户kill下
      

  3.   

    估计是
    stat.setString(1, articleReply.getContent()); 
    stat.setString(2, st.format(date)); 
    stat.setInt(3, articleReply.getId()); 
    出错了
    stat.setString(2, st.format(date)); 
    用Timestamp()方法
      

  4.   

    你的表被其他数据库连接在DML且他们没有commit,你在等他们commit咯。
    也有可能你数据量太大,数据库来不及反应
      

  5.   

    看看数据库中replaytime的类型是否匹对
      

  6.   

    PreparedStatement stat = null; 
    Date date = new Date(); 
    SimpleDateFormat st = new SimpleDateFormat("yyyy-MM-dd"); 
    String sql = "update articlereply set  content=?,replaytime=? where id=?"; 
    try { 
    stat = conn.prepareStatement(sql);//说明 conn已经成功获取 
    stat.setString(1, articleReply.getContent()); 
    stat.setString(2, st.format(date)); 
    stat.setInt(3, articleReply.getId()); 
    stat.executeUpdate();//标注 
    result =true; 
    我想问一下,你方法里面传入的是一个对象是吧?
    stat.setString(1, articleReply.getContent()); 
    stat.setInt(3, articleReply.getId()); 
    前2个多是从对象里面取的值,
    stat.setString(2, st.format(date)); 
    这个值是从对象里面取出来的吗?显然不是...你试试看将这个值先添加到对象里面去再进行:
    stat.set();
    当然我只是猜测...可以试试。
    期待中....