/**
 * 执行数据库多条查询
 * 
 * @param 要执行的SQL语句的泛型集合
 * @return 结果集的集合
 * */
@Override
public ArrayList<ResultSet> ExcuteQuery(ArrayList<String> transSQL) {
try {
if (!IsDBOpen())
return null; try {
ArrayList<ResultSet> rsArray = new ArrayList<ResultSet>();
statm = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs = null;
for (String strSQL : transSQL) { // 遍历SQL语句集合
String oper = strSQL.substring(0, 6); // 获取操作类型
if (oper.toLowerCase().equals("select")) {
rs = statm.executeQuery(strSQL);
rsArray.add(rs);
}
}
return rsArray; } catch (Exception e) {
errorMessage = e.getMessage();
return null;
}
} catch (Exception e) {
errorMessage = e.getMessage();
}
return null;
}
         /**
 * 返回泛型结果的第一个结果集
 * 
 * @param 泛型结果集
 * */
public ResultSet GetResultSet(ArrayList<ResultSet> rsArray) {
if (rsArray != null && rsArray.size() > 0)
return rsArray.get(0);
else
return null;
}
                  DataAccess db = new DataAccess();
ArrayList<String> strArray = new ArrayList<String>();
strArray.add("select * FROM C_TREEBASE");
strArray.add("select fid, name, icon from b_frame where rownum = 1");
ArrayList<ResultSet> rsArray = db.ExcuteQuery(strArray);
try {
ResultSet rs = db.GetResultSet(rsArray);
if(rs!=null) {
if(rs.next())
System.out.println(rs.getObject(0));
}
db.CloseConnection();
} catch (Exception e) {
System.out.println(db.GetErrorMessage());
e.printStackTrace();
}java.lang.NullPointerException我是一个新手,请问这段代码中为什么会出现RS空指针呢。
想做一个传入多条SQL,执行后返回N个结果集,然后把结果集放入泛型中。
之后在使用这个泛型的时候可以根据索引取出其中指定位置的结果集进行操作。
我没有断开连接,对ResultSet理解的不够透彻,希望大家帮忙解决这个空指针异常问题