我正在使用java类,我正在执行查询并将查询结果分配给字符串数组,最后返回数组。
一切正常。但是如果db值为空(不是整个数组),我想返回“无数据”。我能为此做些什么?
代码:
query="select `t1`,`t2`,`t3` from test";
PreparedStatement pre = conn.prepareStatement(query);
ResultSet res = pre.executeQuery();
String val[][] = new String[res.getRow()][3];
while (res.next()) {
val[i][0] = res.getString(1);
val[i][1] = res.getString(2);
val[i][2] = res.getString(3);
i++;
}
res.close();
conn.close();
pre.close();
return (val);
(如果val[1][1]
为空,我希望res.getString(2)
为“无数据”。
答案 0 :(得分:2)
答案 1 :(得分:0)
试试这种方式
val[i][0] = (res.getString(1)!=null & !res.getString(1).equals(""))?res.getString(1).equals(""):"No Data";
val[i][1] = (res.getString(1)!=null & !res.getString(2).equals(""))?res.getString(3).equals(""):"No Data";
val[i][2] = (res.getString(1)!=null & !res.getString(3).equals(""))?res.getString(3).equals(""):"No Data";
使用唯一的“&”用&&amp ;;检查条件时会发生什么首先它将检查第一个即rs.getString(1)!= null如果这是null或不是它将检查另一个条件,即rs.getString(1).equal(“”)所以如果你检查它会null然后在第二个条件中它将导致NullPointerException的错误。
如果你只使用一个&然后它会检查第一个条件是否为真,然后只检查另一个条件,否则不行。
答案 2 :(得分:0)
添加如下小辅助方法:
public static String getValue(String value) {
return getValue(value, "No Data");
}
public static String getValue(String value, String default) {
return value == null ? default : value;
}
像这样使用:
val[i][0] = getValue(res.getString(1)); // standard
val[i][0] = getValue(res.getString(1), "NULL"); // with custom default message