笔记:ResultSet中数据不存在的情况
来源:互联网 发布:合肥怎么样知乎 编辑:程序博客网 时间:2024/06/05 20:04
在写自己的dbtuil时遇到的问题result中不存在数据,结果集遍历会报下标异常的错误
try {PreparedStatement ps=conn.prepareStatement(sql);ResultSet rs=ps.executeQuery();if(rs!=null){li=new ArrayList<T>();while(rs.next()==true){T obj=(T)t.getClass().newInstance();for(int i=0;i<fields.length-1;i++){ // 获取属性的名字String fname = fields[i].getName();String name=fname.substring(fname.lastIndexOf(".")+1); name = name.substring(0, 1).toUpperCase() + name.substring(1); // System.out.println("属性名是:"+fname); //获取属性的类类型 String type=fields[i].getGenericType().toString(); // System.out.println("属性的类类型是:"+type); Method writeField=null;
因为ps.excuteQuery()返回的结果集中无论是否存在数据结果集都不会为空,
因此rs!=null的判断是多此一举,
并且此时当数据库中不存在自己要查询的数据时遍历结果集会报下标异常的错误(java.lang.IndexOutOfBoundsException: Index: 0, Size:0)
代码改进
try {PreparedStatement ps=conn.prepareStatement(sql);ResultSet rs=ps.executeQuery();if(rs!=null){if(rs.next()==true){li=new ArrayList<T>();rs.beforeFirst();while(rs.next()==true){T obj=(T)t.getClass().newInstance();for(int i=0;i<fields.length-1;i++){ // 获取属性的名字
光标首先在第一行之前,当有下一行数据时rs.next()会返回true,没有下一行则返回false,
因此先让光标移动一行用来确定第一行是否存在
如果返回true证明resultset中有数据,
将光标移回第一行之前(rs.beforeFirst())遍历结果集
0 0
- 笔记:ResultSet中数据不存在的情况
- java中ResultSet遍历数据
- 获取jdbc ResultSet的数据
- JDBC中ResultSet的修改
- Java中,ResultSet 的用法
- Java中,ResultSet 的用法
- Java中,ResultSet 的用法
- 数据库中ResultSet的使用
- Java中ResultSet 的用法
- 怎样删除数据字典中不存在的表信息
- 处理查找海量数据中不存在的一个
- ResultSet数据自动绑定到JavaBean中
- MYSQL5.7中初次登陆修改root密码出现password子段不存在的情况
- 数据库异常:用尽的 Resultset 出现的几种情况
- Android中突发情况数据的保存
- js中遍历数据的多种情况
- ResultSet中做if判断时next()两次取不到第一条数据的问题
- 解决当字段不存在使用resultSet.getString("id")报异常的问题
- auto and auto&
- 信息熵
- 【Java TCP/IP Socket】UDP Socket(含代码)
- 菱形继承和虚继承、对象模型和虚基表
- Android Serializable接口与Parcelable接口
- 笔记:ResultSet中数据不存在的情况
- 51nod 1189 阶乘分数 (分解质因子加上逆元,乘法逆元基本意思)
- Codeforces-----140A---New Year Table---数学水题
- 20170325_Android_系统架构
- 网易实习生编程题2
- poj3126 prime path bfs
- 推荐几个数据分析网站
- 415. Add Strings
- C++: 根据key或value对map排序