【发布时间】:2014-06-11 07:38:02
【问题描述】:
我想在 Java 中执行查询。
我创建了一个连接。然后我想执行一个INSERT 语句,完成后,连接关闭,但我想通过连接执行一些插入语句,当循环完成时关闭连接。
我能做什么?
我的示例代码是:
public NewClass() throws SQLException {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
System.out.println("Where is your Oracle JDBC Driver?");
return;
}
System.out.println("Oracle JDBC Driver Registered!");
Connection connection = null;
try {
connection = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl1", "test",
"oracle");
} catch (SQLException e) {
System.out.println("Connection Failed! Check output console");
return;
}
if (connection != null) {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * from test.special_columns");
while (rs.next()) {
this.ColName = rs.getNString("column_name");
this.script = "insert into test.alldata (colname) ( select " + ColName + " from test.alldata2 ) " ;
stmt.executeUpdate("" + script);
}
}
else {
System.out.println("Failed to make connection!");
}
}
select语句("SELECT * from test.special_columns")执行时,必须循环两次,但是当(stmt.executeUpdate("" + script))执行完毕,则关闭连接,从类中返回。
【问题讨论】:
-
你有可能遇到异常吗?
-
我不这么认为,因为当我打印脚本并为 sqlPlus 执行它们时,它们没问题并且插入成功
-
在循环中添加一些
System.out.println()语句以查看发生了什么或使用调试器。 -
我建议将 try/catch 放在你的循环周围 - 并打印你可能遇到的任何异常。可能会有一些你不太期待的事情。