我得到了以下代码来检索表中的所有行:
String MakeTXT = "USE SRO_VT_SHARD Select * from _RefTeleLink";
pst = conn.prepareStatement(MakeTXT);
rs = pst.executeQuery();
ArrayList<String> links = new ArrayList<>();
int i = 1;
String rows = "";
while (rs.next()) {
for (i = 1; i <= 22; i++) {
links.add(rs.getString(i));
if (i == 22) {
links.add("\n");
}
}
}
rows = String.join("\t", links);
System.out.println(rows);
}
}
我想做的是:
我的代码目前输出的内容: output
这样做是因为有22列,当循环达到22时,它会向ArrayList添加一个输入。
我真正想要的是使用ResultSet复制整行的方法,而不是使用for循环循环22次,并在22个结果中生成一行。
到处都看,但找不到任何东西...... :(
答案 0 :(得分:0)
在读取列值时,不需要ArrayList来保存列值。我最好使用StringBuilder,如下图所示,连接循环中的制表符,然后用换行符替换最后一个。
String MakeTXT = "USE SRO_VT_SHARD Select * from _RefTeleLink";
Statement stm = conn.createStatement();
ResultSet rs = stm.executeQuery(MakeTXT);
List<String> rows = new ArrayList<>();
StringBuilder row = new StringBuilder();
ResultSetMetaData meta = rs.getMetaData();
final int colCount = meta.getColumnCount();
while (rs.next()) {
row.setLength(0);
for (int c=0; c<=colCount; c++)
row.append(rs.getString(c)).append("\t");
row.setCharAt(row.length()-1, '\n');
rows.add(row.toString());
}
rs.close();
stm.close();