SQL中execute操作返回false的问题
2017-11-18 20:23
295 查看
博客原文
execute内部细节代码如下:
今天在码代码的时候遇到了一个问题,代码如下:
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()返回的是更新的记数。
相关文章推荐
- preparedstatement execute()操作成功!但是返回false
- 使用PreparedStatement的execute方法执行sql插入语句,执行成功,但是返回结果却为false
- sql map 索引插入的问题 防止多条重复操作返回id重复
- SqlCommand.ExecuteReader 无法获取 sqlserver 存储过程 OUTPUT 返回的参数值问题
- [K/3Cloud]DBServiceHelper.ExecuteDataSet(this.Context, sql)) 返回数据问题
- [K/3Cloud]DBServiceHelper.ExecuteDataSet(this.Context, sql)) 返回数据问题
- 1个SQL操作数据库的问题
- Python os模块中的isfile()和isdir()函数均返回false问题解决方法
- EF5中 执行 sql语句使用Database.ExecuteSqlCommand 返回影响的行数 ; EF5执行sql查询语句 Database.SqlQuery 带返回值
- 一次ORA-4030问题诊断及解决【解决思路不错,说明了对象的统计信息与优化器的优化操作(即选择执行一个SQL语句在该优化参数环境下最佳的执行计划)间的关系】
- 【SQL】常用数据库操作及面试问题总结 - 学生老师课程学分
- 解决jQuery-validation框架remote校验只能返回true、false问题
- laravel+Mysql 中DB原生SQL操作报1292 Truncated incorrect DOUBLE value问题解决
- ftpClient.makeDirectory(path) 一直返回false,无法创建目录的问题
- android 外部存储创建文件夹总是返回false的问题
- 配置 Oracle 11g侦听器来使用SQL操作ST_Geometry(DLL路径问题)
- SqlHelper.ExecuteScalar返回插入的记录的主键
- “不返回任何键列信息的SelectCommand不支持UpdateCommand的动态SQL生成”问题
- 关于SetupDiEnumDeviceInfo枚举设备返回false问题的解决办法
- 利用ajax在index页面自动执行方法并显示相关内容,在执行相关按钮操作(如登录注册)后返回index页面后ajax不执行,无法显示相关内容的问题解决方法之一