java.sql.SQLException: 用尽的 Resultset
ConnectioninsertConn=GetConnection.getOracleConnection();Statementps=null;ResultSetrs...
Connection insertConn = GetConnection.getOracleConnection();
Statement ps=null;
ResultSet rs = null;
ResultSet qyxxRs = null;
String qyjbxxzzjgdm = "";//企业基本信息表组织机构代码
String qyxxzzjgdm = "";//企业信息原始表组织机构代码
String qymc = "";//
String yyzzzch = "";//
List<String> list = new ArrayList<String>();
try {
ps = insertConn.createStatement();
String sql = "select t.zzjgdm,t.qymc,t.yyzzzch,t.fddbr,t.fddbrzjhm,b.fddbrzw,b.fddbrzc,b.qyfzr,b.qyfzrzw,b.qyfzrzc," +
"b.jsfzr,b.jsfzrzw,b.jsfzrzc,w.sssf,t.zcdz,t.xzdqbm,t.zczj,t.zcbz,t.jjlx,b.jlsj,t.lxdh,w.zjbgcz,w.wz,w.sssf," +
"t.xyszlb,b.qylb,w.basj,t.xylzgx,t.fddbrlxsj,t.bz " +
"from B_TEMP_QYJBXX t,B_TEMP_QYZZZS b,B_TEMP_WDQYBA w " +
"where t.zzjgdm=b.zzjgdm and b.zzjgdm=w.zzjgdm and t.valid=1 and b.valid=1 and w.valid=1";
rs = ps.executeQuery(sql);
while(rs.next()){
qyjbxxzzjgdm = rs.getString(1);
qymc = rs.getString(2);
yyzzzch = rs.getString(3);
list.add(qyjbxxzzjgdm);
qymc = rs.getString(2);
list.add(qymc);
for(int i = 0;i<list.size();i++){
String qyxxSql = "select t.zzjgdm from B_QYXX t where t.zzjgdm='"+list.get(i)+"'";
qyxxRs = ps.executeQuery(qyxxSql);
}
if(qyxxRs!=null&&qyxxRs.next()){//判断是否存在值
String updateSql = "update B_QYXX t set t.qymc='"+qymc+"',t.zzjgdm='"+qyjbxxzzjgdm+"',t.yyzzh='"+yyzzzch+"'";
ps.executeUpdate(updateSql);
}else{
String insertSql = "";
}
}
} catch (RemoteException e) {
e.printStackTrace();
} catch (SQLException e) {
try {
insertConn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}finally {
try {
if(null!=ps){ps.close();}
if(null!=insertConn){insertConn.close();}
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("执行完毕!");
}
主要问题在while 里面,我需要用两个ResultSet 不知道应该怎么写? 展开
Statement ps=null;
ResultSet rs = null;
ResultSet qyxxRs = null;
String qyjbxxzzjgdm = "";//企业基本信息表组织机构代码
String qyxxzzjgdm = "";//企业信息原始表组织机构代码
String qymc = "";//
String yyzzzch = "";//
List<String> list = new ArrayList<String>();
try {
ps = insertConn.createStatement();
String sql = "select t.zzjgdm,t.qymc,t.yyzzzch,t.fddbr,t.fddbrzjhm,b.fddbrzw,b.fddbrzc,b.qyfzr,b.qyfzrzw,b.qyfzrzc," +
"b.jsfzr,b.jsfzrzw,b.jsfzrzc,w.sssf,t.zcdz,t.xzdqbm,t.zczj,t.zcbz,t.jjlx,b.jlsj,t.lxdh,w.zjbgcz,w.wz,w.sssf," +
"t.xyszlb,b.qylb,w.basj,t.xylzgx,t.fddbrlxsj,t.bz " +
"from B_TEMP_QYJBXX t,B_TEMP_QYZZZS b,B_TEMP_WDQYBA w " +
"where t.zzjgdm=b.zzjgdm and b.zzjgdm=w.zzjgdm and t.valid=1 and b.valid=1 and w.valid=1";
rs = ps.executeQuery(sql);
while(rs.next()){
qyjbxxzzjgdm = rs.getString(1);
qymc = rs.getString(2);
yyzzzch = rs.getString(3);
list.add(qyjbxxzzjgdm);
qymc = rs.getString(2);
list.add(qymc);
for(int i = 0;i<list.size();i++){
String qyxxSql = "select t.zzjgdm from B_QYXX t where t.zzjgdm='"+list.get(i)+"'";
qyxxRs = ps.executeQuery(qyxxSql);
}
if(qyxxRs!=null&&qyxxRs.next()){//判断是否存在值
String updateSql = "update B_QYXX t set t.qymc='"+qymc+"',t.zzjgdm='"+qyjbxxzzjgdm+"',t.yyzzh='"+yyzzzch+"'";
ps.executeUpdate(updateSql);
}else{
String insertSql = "";
}
}
} catch (RemoteException e) {
e.printStackTrace();
} catch (SQLException e) {
try {
insertConn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}finally {
try {
if(null!=ps){ps.close();}
if(null!=insertConn){insertConn.close();}
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("执行完毕!");
}
主要问题在while 里面,我需要用两个ResultSet 不知道应该怎么写? 展开
2个回答
展开全部
楼主你好。方才看了一下你的代码,我想你下面的意思是不是这样的:如果该数据在数据库存在,就更新该数据,不存在就新插入一条数据,是这样的吗?
你的代码:
————————————————————————————————
if(qyxxRs!=null&&qyxxRs.next()){//判断是否存在值
String updateSql = "update B_QYXX t set t.qymc='"+qymc+"',t.zzjgdm='"+qyjbxxzzjgdm+"',t.yyzzh='"+yyzzzch+"'";
ps.executeUpdate(updateSql);
}else{
String insertSql = "";
}
————————————————————————————————
那么看看我给你的建议代码:
boolean exists = false; //判断是否数据库是否存在数据
exists = qyxxRs.next();
do{
if(exists){
String updateSql = "update B_QYXX t set t.qymc='"+
qymc+"',t.zzjgdm='"+qyjbxxzzjgdm+"',t.yyzzh='"+yyzzzch+"'"; /**要提示一下,这条sql写的很是汗颜,为什么?这条sql一旦执行,将是更新所有的数据,这怎么不让人汗颜呢!所以要在sql后面加限定条件where子句*/
ps.executeUpdate(updateSql);
}else{
String insertSql = "";
}
exists = false; //执行一次循环过后,初始化数据
}while(exists = qyxxRs.next());
————————————————————————————————
好了,就是这些,希望能帮助你。
你的代码:
————————————————————————————————
if(qyxxRs!=null&&qyxxRs.next()){//判断是否存在值
String updateSql = "update B_QYXX t set t.qymc='"+qymc+"',t.zzjgdm='"+qyjbxxzzjgdm+"',t.yyzzh='"+yyzzzch+"'";
ps.executeUpdate(updateSql);
}else{
String insertSql = "";
}
————————————————————————————————
那么看看我给你的建议代码:
boolean exists = false; //判断是否数据库是否存在数据
exists = qyxxRs.next();
do{
if(exists){
String updateSql = "update B_QYXX t set t.qymc='"+
qymc+"',t.zzjgdm='"+qyjbxxzzjgdm+"',t.yyzzh='"+yyzzzch+"'"; /**要提示一下,这条sql写的很是汗颜,为什么?这条sql一旦执行,将是更新所有的数据,这怎么不让人汗颜呢!所以要在sql后面加限定条件where子句*/
ps.executeUpdate(updateSql);
}else{
String insertSql = "";
}
exists = false; //执行一次循环过后,初始化数据
}while(exists = qyxxRs.next());
————————————————————————————————
好了,就是这些,希望能帮助你。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询