try (Connection connection=this.jdbcDataSource.getJdbcConnection(this.devId)){
StringBuffer sql=new StringBuffer();
sql.append("select to_char(wm_concat(COLUMN_NAME)) KEY_NAME from user_cons_columns\n");
sql.append("\nwhere constraint_name = (\nselect constraint_name from user_constraints\n");
sql.append("\n where table_name = ? and constraint_type ='P')");
SqlRunner runner=new SqlRunner(connection);
final List<Map<String, Object>> map = runner.selectAll(sql.toString(), tableName);
return map.get(0).get("KEY_NAME").toString();
}catch (SQLException e){
throw new CaptchaException("获取"+tableName+"表主键失败");
}
final String sql = "select count(1) as COUNT from user_tables";
try (Connection connection=jdbcDataSource.getJdbcConnection(this.devId)){
final SqlRunner sqlRunner=new SqlRunner(connection);
final Map<String, Object> map = sqlRunner.selectOne(sql);
num=Integer.parseInt(map.get("COUNT").toString());
} catch (SQLException e) {
throw new CaptchaException("数据库查询数量异常");
}
if (num<=0){
num=0;
}
return num;
selectOne底层调用的是selectAll
用那个selectOne 如果查出来为空,然后直接.toString() 则可能会报错
那什么情况下用 selectOne 什么情况下用selectALL
你肯定查出来的结果不是null然后只有一条就可以用One
例如select count(1) from test