【发布时间】:2011-12-05 17:22:30
【问题描述】:
我有一段相当复杂的代码,所以我不能全部展示出来,但这部分很简单。
我有一个SELECT * FROM myTable,它返回一个结果集给这个方法,应该打印它,toUse 是传递给这个方法的结果集的名称:
ResultSetMetaData rsmd = (ResultSetMetaData) toUse.getMetaData();
System.out.println("");
int numberOfColumns = rsmd.getColumnCount();
for (int i = 1; i <= numberOfColumns; i++) {
if (i > 1) System.out.print(", ");
String columnName = rsmd.getColumnName(i);
System.out.print(columnName);
}
System.out.println("");
while (toUse.next()) {
for (int i = 1; i <= numberOfColumns; i++) {
if (i > 1) System.out.print(", ");
String columnValue = toUse.getString(i);
System.out.print(columnValue);
}
System.out.println("");
}
不是打印出我从中选择的表,而是执行SHOW TABLES; 命令?
编辑:
我认为这与之前的运行有关:
java.sql.DatabaseMetaData meta = con.getMetaData();
results = meta.getTables(null, null, null, new String[]{"TABLE"});
while (results.next()) {
String tableName = results.getString("TABLE_NAME");
if(tableName.equals(parameters)){
return true;
}
}
results.close();
return false;
【问题讨论】:
-
ResultSetMetaData 也返回所有可用的(取决于数据库中的用户访问)数据库表,
-
您能否显示查询以及如何生成
toUse字段? -
不是真的,这是一大堆在代码中跳跃的负载。但我确信冲突是由早期运行的这段代码引起的 - 请参阅主编辑
-
@Eric 我误读了您的问题,看来您设法将第二个 sn-p 的结果集作为
toUse传递给第一个。如果这是真的,你真的应该重构。