做一些处理
需要从一个表根据条件查出一个ID
然后通过这个ID去查另一个表里的一些值private void updateSms() {
Log.getInstance().printInfo("", "正在更新");
Connection conn = null;
Statement stat = null;
ResultSet rsRecord = null;
//全部
ResultSet rsMoSmsAll = null;
int nArg = 0;
int nArg1 = 0;
int nArg2 = 0;
String ctrl=null;
try {
conn = DataBaseManage.getInstance().getConnection();
stat = conn.createStatement();
conn.setAutoCommit(false);
rsRecord = stat.executeQuery( "select SendID from table_a where Flag=1" );
while (rsRecord.next()) {
nArg = stat.executeUpdate( "update table_b set PushStatus = 5 " +"where SendID='"+rsRecord.getString(1)+"'" );
rsMoSmsAll=stat.executeQuery( "select Number from table_b " +"where SendID='"+rsRecord.getString(1)+"' and PushStatus=5" );
}
conn.commit();
} catch (Exception e) {
ExceptionHeading.getException(this.getClass().getName(), e);
}finally{
try {
rsRecord.close();
rsMoSmsAll.close();
stat.close();
conn.close();
} catch (SQLException e) {
ExceptionHeading.getException(this.getClass().getName(), e);
}
}
}
现在的问题是如果rsRecord没查到值的话,在finally时关闭rsMoSmsAll报空指针错误,因为rsMoSmsAll没进行初始化,怎么能初始化rsMoSmsAll呢?JavaString异常空指针
需要从一个表根据条件查出一个ID
然后通过这个ID去查另一个表里的一些值private void updateSms() {
Log.getInstance().printInfo("", "正在更新");
Connection conn = null;
Statement stat = null;
ResultSet rsRecord = null;
//全部
ResultSet rsMoSmsAll = null;
int nArg = 0;
int nArg1 = 0;
int nArg2 = 0;
String ctrl=null;
try {
conn = DataBaseManage.getInstance().getConnection();
stat = conn.createStatement();
conn.setAutoCommit(false);
rsRecord = stat.executeQuery( "select SendID from table_a where Flag=1" );
while (rsRecord.next()) {
nArg = stat.executeUpdate( "update table_b set PushStatus = 5 " +"where SendID='"+rsRecord.getString(1)+"'" );
rsMoSmsAll=stat.executeQuery( "select Number from table_b " +"where SendID='"+rsRecord.getString(1)+"' and PushStatus=5" );
}
conn.commit();
} catch (Exception e) {
ExceptionHeading.getException(this.getClass().getName(), e);
}finally{
try {
rsRecord.close();
rsMoSmsAll.close();
stat.close();
conn.close();
} catch (SQLException e) {
ExceptionHeading.getException(this.getClass().getName(), e);
}
}
}
现在的问题是如果rsRecord没查到值的话,在finally时关闭rsMoSmsAll报空指针错误,因为rsMoSmsAll没进行初始化,怎么能初始化rsMoSmsAll呢?JavaString异常空指针
OR
没有判断EOF之类的方法?
就是检查的结果是空的方法结束的时候还是要执行finally啊
判断为空的话怎么处理rsMoSmsAll呢?
打开记录集,判断SS的值
如果查不出来数据的话ss值是0,但是是0的话就不会初始化rsMoSmsAll,然后rsMoSmsAll.close()的时候还是会抛出空指针吧
执行
rsRecord = stat.executeQuery( "select SendID from table_a where Flag=1" );
否则不执行