conn.excute()插入数据库成功,但却返回false原因
来源:互联网 发布:定义一个二维数组 编辑:程序博客网 时间:2024/05/18 07:22
excute()插入数据库成功,但却返回false
本文主要通过一个插入mysql数据库实例演示:
- 一、Test类部分
@Test public void testInsertCustomer(){ Customer customer = new Customer(); customer.setName("张三的小名"); customer.setTelephone("12345678901"); customer.setDept("人事部"); customer.setEamil("123456@qq.com"); crudController.insertCustomer(customer); }
- 二、Controller层部分
/** * 保存用户信息 * @param customer */ public static void insertCustomer(Customer customer) { boolean flag = crudService.insertCustomer(customer); if (flag){ System.out.println("保存客户信息成功"); } else { System.out.println("保存客户信息失败"); } }
- 三、Service层部分
/** * 保存客户信息 */ public boolean insertCustomer(Customer customer){ boolean flag = false; try { conn = dataSourceUtil.getConnection(); String sql = "insert into demo_customer(cus_name,cus_telephone,cus_dept,cus_email)" + "values(?,?,?,?)"; ps = conn.prepareCall(sql); ps.setString(1,customer.getName()); ps.setString(2,customer.getTelephone()); ps.setString(3,customer.getDept()); ps.setString(4,customer.getEamil()); flag = ps.execute(); } catch (Exception e){ e.printStackTrace(); } finally { dataSourceUtil.realeaseResource(rs,ps,conn); } return flag; }
- 涉及到的dataSources类
package com.qiuxx.c3p0_java;import com.mchange.v2.c3p0.ComboPooledDataSource;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;/** * c3p0连接池工具类 */public class DataSourceUtil { private static final String username = "root"; private static final String password = "root";//**设置密码** private static final String driverName = "com.mysql.jdbc.Driver"; private static final String url = "jdbc:mysql://localhost:3306/demo_test"; private static final int maxPoolSize = 20; //连接池最大连接数 private static final int minPoolSize = 10; //连接池最小连接数 private static final int initialPoolSize = 10; //连接池初始的连接数 // private static final int maxStatements = 100; //连接池的缓存Statement的最大数 private static Connection conn; private static ComboPooledDataSource dataSources; static { try{ dataSources = new ComboPooledDataSource(); dataSources.setDriverClass(driverName); dataSources.setJdbcUrl(url); dataSources.setUser(username); dataSources.setPassword(password); dataSources.setMaxPoolSize(maxPoolSize); dataSources.setMinPoolSize(minPoolSize); dataSources.setInitialPoolSize(initialPoolSize); //dataSources.setMaxStatements(maxStatements); } catch (Exception e){ e.printStackTrace(); } } public DataSourceUtil(){} public DataSourceUtil(String JdbcUrl){ dataSources.setJdbcUrl(JdbcUrl); } public static Connection getConnection(){ try { conn = dataSources.getConnection(); } catch (Exception e){ e.printStackTrace(); } return conn; } public static void realeaseResource(ResultSet rs, PreparedStatement ps, Connection conn){ try{ if (null != rs){ rs.close(); } if (null != ps){ ps.close(); } if (null != conn){ conn.close(); } } catch (Exception e){ e.printStackTrace(); } }}
- 至于Customer bean类,只有String的name,telephone,email,dept,以及setter/getter/toString方法
最终结果发现,插入数据库成功,但打印的信息确实“保存失败”,这是为什么?
- 追踪excute方法进入CallableStatement类,再追踪excute(),最终进入PreparedStatement类,可以看到返回规则:
return rs != null && rs.reallyResult();
可以看到这有两个判断条件,而在增删改时ResultSet,也就是rs这时是为null的,所以返回一直是false。
- 建议!!
把flag = ps.execute();
修改一下
使用
int resNum = ps.executeUpdate();if (resNum == 1){ flag = true;}
来做判断
阅读全文
1 0
- conn.excute()插入数据库成功,但却返回false原因
- 关于jquery 的ajax调用的一些总结(记录插入数据库成功,但ajax返回false)
- PreparedStatement execute执行插入成功却返回false
- PreparedStatement execute执行插入成功却返回false
- 为什么PreparedStatement execute执行插入成功却返回false
- 在Extjs提交表单时,后端可以成功地执行操作,但返回给前端的却是false
- 程序返回插入数据库成功,但是数据库内却没有数据
- java代码显示正确执行,但为何数据未成功插入数据库?原因如下
- mysql_query返回false原因
- Process32First 返回FALSE的原因
- Hibernate创建表成功,但数据库中却没有表的解决方法
- Java中打印出来完全相同的两个字符串,用equals方法比较返回的却是false的原因
- 解决PHP连接上了Mysql但却无法插入数据到数据库中
- mybatis显示修改数据库成功, 但没有修改数据库的原因 (mybatis可以查询但无法修改数据库)
- window 2003主机所有网站页面都在头部被插入恶意代码,但代码中却找不到可能原因
- conn.setAutoCommit(false)
- conn.setAutoCommit(false);
- Hibernate 中save方法运行成功之后却没有保存进数据库的原因
- JAVA中的进制转换问题
- ps命令输出详解
- 日期类型和字符串类型互转
- WeMos D1 GPIO引脚定义
- 【容斥+莫比乌斯反演】BZOJ2301 [HAOI2011]Problem b
- conn.excute()插入数据库成功,但却返回false原因
- Hive SQl语句的执行
- ASP.NET Web Forms
- C#总结---属性、类、对象、方法
- ASP.NET Web Forms
- 将Bitmap位图转化为base64字符串互转
- WEB前端 -- 单选按钮、下拉、隐藏、表单
- 代码编辑器中文字符编码转换
- Python--json