Ich mache meine ersten Anwendungen mit JDBC/Oracle ... Heute hatte ich ein Problem und ich kann nicht herausfinden, was los ist.deleterow() ReadOnly Statement Fehler
, dass mein Code (einige Teile) ist
Meine globalen Variablen:
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;
[...]
Meine Verbindungsmethode:
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);
}
So habe ich eine Methode zum Löschen eine Zeile in einer Tabelle:
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() gibt mir einen Fehler ... es sagt mir, dass mein ResultSet nur gelesen wird, aber in meiner Aussage ist es als
s = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
so delcared, was ist los?
sry für den noobish Code und das schlechte Englisch -.- ''‘
Es funktioniert! Groß! Ich danke dir sehr!!! – Cirou