简明的表述最近的编程项目中遇到的一个错误(或者是其他项目中令你印象深刻的错误),陈述错误的起因、影响以及你如何解决它的。
这是一段从数据库查找数据的函数代码:
public static String getAllRecords(){ sql = "select a.aid,s.pid,s.name,a.type,a.ctime,a.days,a.remark,a.permission " + "from absence a join staffinfo s on a.pid=s.pid";//SQL语句 db1 = new DBHelper(sql);//创建DBHelper对象 Mapmap = new HashMap (); res = ""; try { ret = db1.pst.executeQuery();//执行语句,得到结果集 while (ret.next()) { if(res!="") res +=","; map.put('\"' +"id"+ '\"', ret.getString(1)); map.put('\"' +"ownerId"+ '\"',ret.getString(2)); map.put('\"' +"ownerName"+ '\"','\"' + ret.getString(3)+ '\"'); map.put('\"' +"leaveType"+ '\"',ret.getString(4)); map.put('\"' +"time"+ '\"','\"' + ret.getString(5)+ '\"'); map.put('\"' +"days"+ '\"', ret.getString(6)); map.put('\"' +"reason"+ '\"', '\"' + ret.getString(7)+ '\"'); map.put('\"' +"approval" + '\"',ret.getString(8)); res = res+map.toString(); } res = res.replace("=", ":");//显示数据 //System.out.println(res.substring(0,116)); //res =res.substring(0,116); res = "["+res+"]"; ret.close(); db1.close();//关闭连接 } catch (SQLException e) { e.printStackTrace(); } return res; }
控制器中的调用语句为:
@RequestMapping("/records") public String getAllRecords() { //获取所有员工信息 //System.out.println(LeaveService.getAllRecords()); return LeaveService.getAllRecords(); }
通过调用url调用查询功能时,没有返回结果。
解决办法:查看了数据库,发现存在符合查询条件的记录;
在代码中添加了关键值输出,运行后查看,发现搜索结果集ret为空,锁定错误原因为查询错误而非处理结果集产生的错误;
查看数据库查询语句,发现语句使用错误,问题解决。