一行SQL更新语句(数据库用的是Oracle),在SQL工具中能执行通过(如PL/SQL),但在Java中用JDBC中更新却失败,请问这是什么原因?
谢谢。

解决方案 »

  1.   

    你最好把在SQL工具中执行的语句和java底层语句对比一下,或者贴出来,看一下。还有就是你说更新失败,报的错是什么最好贴出来,也许是其他的问题呢
      

  2.   

    不好意思,没描述清楚。这里的失败是指提交SQL语句后堵塞了,Java处于等待状态,就像单线程的堵塞状态,没有任何返回值,也没有任何异常,等了N久程序都没有反应!
      

  3.   

    还有,就是数据库也是在本机上的。
    表结构如下
    TABLE TEST1.TB_ONE
    (
        S_ID                       NUMBER(7,0) NOT NULL,
        SOME_BEGIN_DATE            DATE NOT NULL,
        SOME_END_DATE              DATE NOT NULL,
        UP_COUNT                   NUMBER(3,0) NOT NULL,
        UP_TIME                    TIMESTAMP(6) NOT NULL,
        UP_USER                    NUMBER(7,0) NOT NULL
    )主键分别是 S_ID,SOME_BEGIN_DATE。
      

  4.   

    哎,现在问问题的方式实在是太高级了,典型的一句话问题如果 CSDN 要评比典型问题,这个问题就能上榜
      

  5.   

    UPDATE
     TB_ONE
    SET
     UP_TIME=SYSDATE,
     UP_USER='99'
    WHERE
     S_ID='1'
     AND
     SOME_BEGIN_DATE='2009/01/01'Java部分代码如下,异常处理就不写了。
    Connection conn=null; //conn
    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    conn = DriverManager.getConnection("java:oracle:thin:@127.0.0.1:1521:test", "test",
    "test");
    String sqlstr="update into TB_ONE SET UP_TIME=SYSDATE,UP_USER=? WHERE S_ID=? AND SOME_BEGIN_DATE=?"
    PreparedStatement ps=conn.prepareStatement(sqlstr);
    ps.setString(1, "99");
    ps.setString(2, "1");
    ps.setString(3, "2009/01/01");
    ps.executeUpdate();
    conn.close();
      

  6.   

    "update into TB_ONE SET UP_TIME=SYSDATE,UP_USER=? WHERE S_ID=? AND SOME_BEGIN_DATE=?" 
    没有into
      

  7.   

    其实是用S2dao做数据库处理的。
    用过s2dao的朋友应该知道,这玩意可以支持直接写SQL文件,但解析有时候让人很头痛。
    查来查去找不到问题,我都已经下他的源码跟到实现层去了,到了最后就是它使用JDBC了。
      

  8.   

    不好意思,我打多了,没有into
    update TB_ONE SET UP_TIME=SYSDATE,UP_USER=? WHERE S_ID=? AND SOME_BEGIN_DATE=?
    如果有into会直接报错的,问题点不在这。
      

  9.   

    怎么查看数据是否被锁住了?查看oracle数据库的工具可以打开这个表,并且可以编辑。
    而且在Java代码提交堵塞后,oracle数据库的工具依然可以打开这个表,并且还是可以编辑。
      

  10.   


    编辑后是否可以提交,如果可以提交的话那就可以排除锁表的问题。再就是JDBC执行更行操作后确认提交了事务。
      

  11.   

    感觉是有个session对该表update了没commit或rollback.
      

  12.   

    感觉还是在SQL语句本身。查查字段的类型吧。