FileReader fr = new FileReader(new File("D:\\folder\\mySQLFile1.txt"));
BufferedReader br = new BufferedReader(fr);
while((s = br.readLine()) != null) {
sb.append(s);
}
br.close();
String sbq=sb.toString();
String S1 = sbq.replaceAll("(?:/\\*(?:[^*]|(?:\\*+[^*/]))*\\*+/)|(?://.*)","");
String[] inst = S1.split(";|/");
for (int i = 0; i<inst.length; i++) {
if (!inst[i].trim().equals("")) {
ResultSet resultSet = stmt.executeQuery(inst[i]);
ResultSetMetaData rsmd = resultSet.getMetaData();
int columnsNumber = rsmd.getColumnCount();
// while (resultSet.next()) {
for (int x = 1; x <= columnsNumber; x++) {
String columnValue = resultSet.getString(x);
System.out.print(columnValue + " " );
}
System.out.println("");
// }
}
System.out.println();
}
如果没有while循环,select将不起作用,而while则不接受下一个查询。
2条答案
按热度按时间ddrv8njm1#
首先,在使用上
replaceAll
必须对所有字符进行转义,一次用于java,第二次用于regex。所以如果你用
\
在一个replaceAll
你一定要这样写\\\\
.第二,用sysout打印
inst[i]
在发送之前。0qx6xfy62#
这个
ResultSet
是一个非常通用的接口,它是基于游标的。以下引用官方文件:
一
ResultSet
对象保持指向其当前数据行的光标。最初,光标位于第一行之前。这个next
方法将光标移动到下一行,因为它返回false
当表中没有更多行时ResultSet
对象,它可以用于while
循环遍历结果集。这意味着你必须表演
next
移动光标。这是图示。那为什么呢
ResultSet
是否基于光标?允许底层实现不将潜在的大量行加载到内存中。光标是滚动潜在大数据的常见模式。例如,pgresultset使用resultcursor执行此操作。
p、 也请始终执行
ResultSet.close()
释放资源。