Ken*_*han 63 java jdbc resultset
由于ResultSet包含从动态SQL返回的数据,是否有任何方法可以确定ResultSet是否包含特定的列名?例如,如果我运行rs.getString("Column_ABC");但Column_ABC确实不存在,它将抛出异常.如何测试ResultSet是否可以从名为"Column_ABC"的列中获取数据?
Eri*_*son 96
使用该ResultSetMetaData课程.
public static boolean hasColumn(ResultSet rs, String columnName) throws SQLException {
ResultSetMetaData rsmd = rs.getMetaData();
int columns = rsmd.getColumnCount();
for (int x = 1; x <= columns; x++) {
if (columnName.equals(rsmd.getColumnName(x))) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我不明白的是为什么需要这个功能.正在执行的查询或存储过程应具有已知结果.应该知道查询的列.需要这样的功能可能表明某处存在设计问题.
小智 14
private boolean isThere(ResultSet rs, String column){
try{
rs.findColumn(column);
return true;
} catch (SQLException sqlex){
logger.debug("column doesn't exist {}", column);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
不确定这是否比Erick的答案更有效或更低效,但它更容易.
String str;
try {
str = rs.getString(columnName);
} catch (java.sql.SQLException e) {
str = null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53601 次 |
| 最近记录: |