2012-04-05 38 views
0

我正在做我的第一個應用程序使用JDBC/Oracle ... 今天我有一個問題,我找不出什麼是錯的。deleterow()只讀語句錯誤

這是我的代碼(部分)

我的全局變量:

public class Esercizio02_GestioneDB { 

public Esercizio02_GestioneDB(){ 

} 

public Connection conn = null; 
public Statement s = null; 
public ResultSet rs = null; 
public ResultSet rs1 = null; 
ResultSetMetaData rsmd = null; 
ResultSetMetaData rsmd1 = null; 

[...] 

我的連接方法:

public void connetti(String user, String pwd) throws ClassNotFoundException, SQLException { 

     //DRIVER 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 

     //URL 
     String url = "jdbc:oracle:thin:@//localhost:1521/xe"; 

     //CONNECTION 
     conn = DriverManager.getConnection(url, user, pwd); 

     //AUTOCOMMIT 
     conn.setAutoCommit(true); 

     //STATEMENT 
     s = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);   


} 

所以,我不得不刪除方法表中的一排:

private void eliminaPrenotazione() { 

    try { 

     String message1 = "Scegli la prenotazione da cancellare:\n\n"; 

     String query = "SELECT * FROM camere_prenotate"; 

     rs1 = s.executeQuery(query); 
     rsmd1 = rs1.getMetaData(); 

     message1 += "INDICE "; 
     for (int i=1; i<=rsmd1.getColumnCount(); i++) { 
      message1 += rsmd1.getColumnName(i); 
      message1 += " \t "; 
     } 
     message1 += "\n_______________________________\n"; 

     int rowIndex = 1; 
     String columnType = ""; 
     while (rs1.next()) {  
      message1 += "["+rowIndex+"]. "; 
      rowIndex++; 

      for (int i=1; i<=rsmd1.getColumnCount(); i++) { 

       columnType = rsmd1.getColumnTypeName(i); 

       if(columnType.substring(0, 3).equalsIgnoreCase("num")) message1 += rs1.getInt(i); 
       if(columnType.substring(0, 3).equalsIgnoreCase("var") || columnType.substring(0, 3).equalsIgnoreCase("dat")) 
         message1 += rs1.getString(i); 

       message1 += " \t "; 
      } 
      message1 +="\n"; 
     } 
     message1 +="\n"; 

     String scelta = JOptionPane.showInputDialog(null, message1); 
     int sceltaInt = Integer.parseInt(scelta); 

     rs1.absolute(sceltaInt); 
     rs1.deleteRow(); 



    } catch (Exception e) { 

     JOptionPane.showMessageDialog(null, "Errore: " + e.getMessage()); 
    } 

} 

deleteRow()返回我的錯誤...它說我,我的ResultSet是隻讀的,但在我的發言它delcared作爲

s = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 

那麼,什麼是錯的?

SRY的noobish代碼和糟糕的英語-.- ''」

回答

3

select *使得Resultset實例只讀。
select COLUMNNAME使其可更新。

+0

它的工作原理!大!非常感謝!!! – Cirou 2012-04-05 17:32:37