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("數(shù)據(jù)庫查詢數(shù)量異常");
}
if (num<=0){
num=0;
}
return num;
selectOne底層調用的是selectAll
用那個selectOne 如果查出來為空,然后直接.toString() 則可能會報錯
那什么情況下用 selectOne 什么情況下用selectALL
你肯定查出來的結果不是null然后只有一條就可以用One
例如select count(1) from test