SQL中execute操作返回false的问题

来源:互联网 发布:淘宝详情页制作思路 编辑:程序博客网 时间:2024/05/16 12:30

博客原文

今天在码代码的时候遇到了一个问题,代码如下:
SQL一:            sql = " update t_receive_user set user_email = ?, user_name = ?, user_tel = ?, update_timestamp = ? , note = ? " +                    " where user_sid = ? ";            connection = getDataSource().getConnection();            ps = connection.prepareStatement(sql);            ps.setObject(1,tReceiveUser.getUserEmail());            ps.setObject(2,tReceiveUser.getUserName());            ps.setObject(3,tReceiveUser.getUserTel());            ps.setObject(4,Time.getCurrentTime()/1000);            ps.setObject(5,tReceiveUser.getNote());            ps.setObject(6,tReceiveUser.getUserSid());            System.out.println(ps.execute());SQL二: sql = " delete t_receive_user where user_sid = ? ";            connection = getDataSource().getConnection();            ps = connection.prepareStatement(sql);            ps.setObject(1,tReceiveUser.getUserSid());            System.out.println(ps.execute());SQL三:sql = "INSERT t_receive_user (user_email,user_name,user_tel,update_timestamp,note)" +                    " values (?,?,?,?,?)";            ps = connection.prepareStatement(sql);            ps.setObject(1,tReceiveUser.getUserEmail());            ps.setObject(2,tReceiveUser.getUserName());            ps.setObject(3,tReceiveUser.getUserTel());            ps.setObject(4,Time.getCurrentTime()/1000);            ps.setObject(5,tReceiveUser.getNote());            System.out.println(ps.execute());我发现即使我的数据库更新成功、删除成功、增加成功,返回值都是false。

execute内部细节代码如下:

public boolean execute() throws SQLException {        synchronized(this.checkClosed().getConnectionMutex()) {            boolean returnVal = false;            this.checkStreamability();            this.setInOutParamsOnServer();            this.setOutParams();            returnVal = super.execute();            if(this.callingStoredFunction) {                this.functionReturnValueResults = this.results;                this.functionReturnValueResults.next();                this.results = null;            }            this.retrieveOutParams();            return !this.callingStoredFunction?returnVal:false;        }    }查资料发现:boolean execute() throws SQLException在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。一些特别处理过的语句返回多个结果,execute 方法处理这些复杂的语句;executeQuery 和 executeUpdate 处理形式更简单的语句。 execute 方法返回一个 boolean 值,以指示第一个结果的形式。必须调用 getResultSet 或 getUpdateCount 方法来检索结果,并且必须调用 getMoreResults 移动到任何后面的结果返回:如果第一个结果是 ResultSet 对象,则返回 true;如果第一个结果是更新计数或者没有结果,则返回 false,意思就是如果是查询的话返回true,如果是更新或插入的话就返回false了;execute()返回的是一个boolean值,代表两种不同的操作啊,getResultSet()返回的是结果集,而getUpdateCount()返回的是更新的记数。
阅读全文
0 0
原创粉丝点击