帮看下这段代码有什么问题,我想要得到的是数据库的表字段,如果指定模式名,直接执行;如果有dblink,通过dblink的方式查找字段信息;如果是同义词表,用同义词的方法查找字段信息。现在的问题是,执行dblink的查找后,resultset有信息,即使不是同义词表,没有执行resultSet = stmt.executeQuery(sql); ,先前保留的resultset也会被清空,还有什么方法可以解决么 
public List <String> getColByTab(String tableName) throws SQLException { 
ResultSet resultSet_synonym; 
ResultSet resultSet_dblink, resultSet22; 
if (hasDefaultSchema()) { 
String sql = "SELECT A.COLUMN_NAME as name" 
+ " FROM DBA_TAB_COLUMNS A " + "WHERE A.OWNER = '" 
+ defaultSchema + "' AND A.TABLE_NAME = '" + tableName 
+ "'"; 
resultSet = stmt.executeQuery(sql); 
} else { 
String sql1 = "select object_name, OWNER from dba_objects where object_type='DATABASE LINK'"; 
resultSet_dblink = stmt.executeQuery(sql1); 
while (resultSet_dblink.next()) { 
String StrRS = resultSet_dblink.getString(1); 
System.out.println("dblink=============" + StrRS); 
String sql3 = "select owner from all_tables@" + StrRS 
+ "" + " where table_name=upper('" + tableName 
+ "')"; 
resultSet22 = stmt.executeQuery(sql3); while (resultSet22.next()) { 
String sql_link = "select COLUMN_NAME from DBA_TAB_COLUMNS@" 
+ StrRS 
+ " where OWNER='" 
+ resultSet22.getString(1).trim() 
+ "'and TABLE_NAME='" + tableName + "'"; 
resultSet = stmt.executeQuery(sql_link); 


String sql = "select TABLE_OWNER,TABLE_NAME " 
+ "from dba_synonyms where synonym_name like '" + tableName 
+ "'"; 
resultSet_synonym = stmt.executeQuery(sql); 
while (resultSet_synonym.next()) { 
sql = "SELECT COLUMN_NAME as name FROM DBA_TAB_COLUMNS " 
+ "WHERE OWNER = '" + resultSet_synonym.getString(1) 
+ "'" + " and TABLE_NAME like '" 
+ resultSet_synonym.getString(2) + "'"; 
resultSet = stmt.executeQuery(sql); 


if (resultSet == null) { 
return null; 

List <String> columnList = new ArrayList <String>(); 
while (resultSet.next()) { 
for (int i = 1; i < ((ResultSetMetaData) resultSet.getMetaData()) 
.getColumnCount() + 1; i++) { 
columnList.add(resultSet.getString(i)); 


return columnList; 
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【chaohui10】截止到2008-07-09 10:46:36的历史汇总数据(不包括此帖):
    发帖的总数量:40                       发帖的总分数:610                      每贴平均分数:15                       
    回帖的总数量:47                       得分贴总数量:7                        回帖的得分率:14%                      
    结贴的总数量:33                       结贴的总分数:430                      
    无满意结贴数:9                        无满意结贴分:180                      
    未结的帖子数:7                        未结的总分数:180                      
    结贴的百分比:82.50 %               结分的百分比:70.49 %                  
    无满意结贴率:27.27 %               无满意结分率:41.86 %                  
    楼主加油
      

  2.   

    不是特别明白LZ的意思,你看看 能不能 把你现在的程序 拆成几个方法。
    每个都返回一个你想要的ResultSet值,
    然后在main里测试下 能不能比较~