又个例子:boolean b = execute("update table userinfo set status='online' where username='huanzai'");这条语句我执行之后,数据库被更新了,但是返回的b=false,怎么会返回false?
如果我用int a = executeUpdate("update table userinfo set status='online' where username='huanzai'");执行这条sql语句,是出错的,无法更新,这是为什么?

解决方案 »

  1.   

    你查下 API 看下executeboolean execute()
                    throws SQLException    在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。一些特别处理过的语句返回多个结果,execute 方法处理这些复杂的语句,executeQuery 和 executeUpdate 处理形式更简单的语句。    execute 方法返回一个 boolean 值,以指示第一个结果的形式。必须调用 getResultSet 或 getUpdateCount 方法来检索结果,并且必须调用 getMoreResults 移动到任何后面的结果。    返回:
            如果第一个结果是 ResultSet 对象,则返回 true;如果第一个结果是更新计数或者没有结果,则返回 false 
        抛出:
            SQLException - 如果发生数据库访问错误或者为此方法提供一个参数
        另请参见:
            Statement.execute(java.lang.String), Statement.getResultSet(), Statement.getUpdateCount(), Statement.getMoreResults()
      

  2.   

    executeUpdateint executeUpdate()
                      throws SQLException    在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL INSERT、UPDATE 或 DELETE 语句;或者是一个什么都不返回的 SQL 语句,比如 DDL 语句。    返回:
            (1) 对于 INSERT、UPDATE 或 DELETE 语句,返回行数 (2) 或者对于什么都不返回的 SQL 语句,返回 0 
        抛出:
            SQLException - 如果发生数据库访问错误或者 SQL 语句返回一个 ResultSet 对象
      

  3.   

    PreparedStatement 对象中执行 SQL 语句!!!你直接用execute executeUpdate没见过,应该是PreparedStatement pstmt pstmt.execute() pstmt.executeUpdate()
      

  4.   


    不好意思哈,写错了    不是直接用execute executeUpdate而是Statement stmt.execute(sql)