-1
右鍵,下面這段代碼應做到以下幾點,創建一個SQL語句,將通過比較兩個表,一個預訂表的預訂ID和找到自由路由ID與路由表中的所有ID的SQL錯誤ORA-00933:SQL命令不能正確地結束/ Java的
這將返回自由路由,它的ID。但我嘗試過的棘手的部分是將其插入列表中,以便隨機化列表並返回隨機路由。
錯誤發生在這附近。任何人都可以告訴我什麼是錯誤的,我如何修補它?
//<editor-fold defaultstate="collapsed" desc="To select all free routes">
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//load the oracle driver...needs to be in classes folder in jre folder
} catch (ClassNotFoundException e) {
System.out.println(
" Can't find class oracle.jdbc.driver.OracleDriver");
System.exit(1);
}
Connection conn3 = null;
//new connection object
Statement stmtFreeR = null;
//new statemnt object
ResultSet freeRoute = null;
//new record set object
try {
conn3 = DriverManager.getConnection("jdbc:oracle:thin:@oracle.staff.ittralee.ie:1521:orcl",
"*", "*");
stmtFreeR = conn3.createStatement();
// create the statement for this connection
//</editor-fold>
freeRoute = stmtFreeR.executeQuery(
"SELECT r.ROUTEID FROM Route r LEFT JOIN Booking b "
+ "ON r.ROUTEID=b.ROUTEID WHERE b.ROUTEID is null ");
// get the results of select query and store in recordset object
while (freeRoute.next()) {
// move to first/next record of recordset
JOptionPane.showMessageDialog(null, "Check: Select all free routes: " + freeRoute.getString(1));
//JOptionPane.showMessageDialog(null, " the answer is " + fRoutes);
// output next record using string format
}
//<editor-fold defaultstate="collapsed" desc="Error handling for Select Statement">
freeRoute.close();
freeRoute = null;
stmtFreeR.close();
stmtFreeR = null;
conn3.close();
conn3 = null;
} catch (SQLException e) {
System.out.println(" A SQL error: " + e.getMessage());
} finally {
if (freeRoute != null) {
try {
freeRoute.close();
} catch (SQLException ignore) {
}
}
if (stmtFreeR != null) {
try {
stmtFreeR.close();
} catch (SQLException ignore) {
}
}
if (conn3 != null) {
try {
conn3.close();
} catch (SQLException ignore) {
}
}
}
//<editor-fold defaultstate="collapsed" desc="To randomize free routes">
if(freeRoute != null) {
List RouteX = new ArrayList();
while (freeRoute.next()) {
RouteX.add(freeRoute.getString(1));
Collections.shuffle(RouteX);
JOptionPane.showMessageDialog(null, "Free routes list: " + RouteX);
}
}
else {
List RouteX = new ArrayList();
//ERROR OCCURS HERE
while (freeRoute.next()) {
RouteX.add(freeRoute.getString (1));
Collections.shuffle (RouteX);
JOptionPane.showMessageDialog (null,"Free routes list: " + RouteX);
}
}
中的ResultSet'freeRoute'是try-catch塊內完整地閱讀,並關閉了最後子句。你以後如何在代碼中讀取它?請發佈失敗的_actual_代碼。 – 2012-03-14 15:59:10
包含失敗的代碼,我在它出現的行的上方添加註釋。但我明白你的意思,它不能讀取已經關閉的東西。 – user1081326 2012-03-14 16:05:26