//显示rs中的数据,标出行数,行号,执行时间,列名
// protected void show(){
// try {
// ResultSetMetaData rsmd=rs.getMetaData();
ResultSetMetaData 保存着搜索结果的描述信息,字段名,字段数据库类型,字段java类型,字段数量,字段数据库精度等
// rsmd.getColumnCount();//字段数量
// rsmd.getColumnClassName(1);//第一字段对应的java类型
// rsmd.getColumnName(2);//第二字段对应的字段名
// rsmd.getColumnType(3);//第三字段对应sql类型
//
// //增强resultset的一些方法
// //ResultSet 结构里有首位。数据在中间,第一次要用next。
// rs.afterLast();// 尾节点
// rs.first(); //第一个数据节点
// rs.beforeFirst(); //首节点
// rs.last(); //最后一条数据节点
//
// rs.absolute(10);//获取指定行号
// rs.getRow();//获取当前行号
//
// rs.next(); //下一个
// rs.previous();//上一个
//
// //使用以上方法要先开启stm或者pstm的游标。否则报错
// //stm = con.createStatement(1004,1007);
// //pstm= con.prepareStatement(sql,1004,1007);
//
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
//显示rs中的数据,标出行数,行号,执行时间,列名
protected void show(){
if(Constant.showers) return;//全局开关
try {
ResultSetMetaData rsmd=rs.getMetaData();
int count =rsmd.getColumnCount();
System.out.println("执行时间"+(start.getTime()-new Date().getTime()));
rs.beforeFirst();//将游标提到第一个节点(无数据)
if(!rs.next()){System.out.println("结果中没有数据");return ;}//检测是否有下一节点
rs.last(); //游标移动到最后一个数据节点
int row =rs.getRow();//获取当前行数
System.out.println("共"+row+"行"); //如果 结果集中没有数据 last会出错。所以应该先对首节点的数据探测。
System.out.println("-----------------------------------");//下面开始显示数据
System.out.print("行数\t"); //去除ln 不换行
for(int i=1;i<count;i++){ //字段操作都是以1开始
System.out.print(rsmd.getColumnName(i)+"\t");
}
System.out.println("\n------------------------------");
//接下来是显示数据,把游标提到首节点,上面是提取行数时下移到最后
rs.beforeFirst();
while(rs.next()){
System.out.print(rs.getRow()+"\t|");
for (int i = 1; i < count; i++) {
System.out.print(rs.getString(i)+"\t|");
} System.out.println();
}
System.out.println("\n\n\n");
rs.beforeFirst();//显示结束后。将游标归为
} catch (Exception e) {
// TODO: handle exception
}
}
protected <OBJ> List<OBJ> autoInject(OBJ o){
return null;
}
}
另一个class里写全局的开关,
package root.tools.tool;
public class Constant {
//常量,设置开关用
public static final Boolean showers = false;//当showers 是 true 的时候,不显示
}
在实现接口的impl中。
//添上这两句。得先打开才能使用
stm=con.createStatement(1004,1007);
show();//要都搜完以后才能展示。所以在rs下
效果图如下: