Hallo,
ich habe mit der UCanAccess und HSQLDB eine Schnittstelle zu meiner MS Access DB programmiert. Alle bisherigen INSERT, UPDATE, DELETE und SELECT-Anweisungen funktionieren einwandfrei.
Nun möchte ich, dass beim Import (Risiken) aus einer Excel-Datei die einzelnen Felder in die zugehörigen Spalten einer Tabelle importiert werden. Die Methode funktioniert an anderer Stelle (Verursacher) ohne Probleme. Komischerweise bekomme ich aber beim Import von Risiken immer die Fehlermeldung: net.ucanaccess.jdbc.UcanaccessSQLException: user lacks privilege or object not found: R_ID
Ich habe per IF jedoch vorher noch eine Abfrage drin, ob das Risiko bereits existiert. Wenn ja, soll das Programm nur ein UPDATE machen, was auch funktioniert. Wenn nicht, einen INSERT. Beim INSERT bekomme ich die Fehlermeldung.
Hier mal ein Ausschnitt vom Coding:
Beim INSERT passiert dann lt. System.out.println folgendes:
INSERT INTO Verursacherrisiko (R_ID, V_ID, B_ID, Q_ID, A_ID, R_Fehlerursache, R_Werkzeug) VALUES (R_ID = 'R1050', V_ID = 'V9005', B_ID = '98152', Q_ID = 'Q34', A_ID = 'L4', R_Fehlerursache = 'HEUTE', R_Werkzeug = 'ABC33');
Wie gesagt: UPDATE funktioniert ohne Probleme und auch der INSERT mit Verursachern in einer anderen Klasse.
Hat da jmd einen hilfreichen Tipp, was das Problem sein könnte? Ich komme da echt nicht weiter und auch das Netz hat keinen nützlichen Rat. Ein Rechteproblem, wie es oft empfohlen wurde, kann es aus meiner Sicht nicht sein, da UPDATE funktioniert und INSERT in einer anderen Klasse.
Vielen Dank im Voraus.
Viele Grüße
ich habe mit der UCanAccess und HSQLDB eine Schnittstelle zu meiner MS Access DB programmiert. Alle bisherigen INSERT, UPDATE, DELETE und SELECT-Anweisungen funktionieren einwandfrei.
Nun möchte ich, dass beim Import (Risiken) aus einer Excel-Datei die einzelnen Felder in die zugehörigen Spalten einer Tabelle importiert werden. Die Methode funktioniert an anderer Stelle (Verursacher) ohne Probleme. Komischerweise bekomme ich aber beim Import von Risiken immer die Fehlermeldung: net.ucanaccess.jdbc.UcanaccessSQLException: user lacks privilege or object not found: R_ID
Ich habe per IF jedoch vorher noch eine Abfrage drin, ob das Risiko bereits existiert. Wenn ja, soll das Programm nur ein UPDATE machen, was auch funktioniert. Wenn nicht, einen INSERT. Beim INSERT bekomme ich die Fehlermeldung.
Hier mal ein Ausschnitt vom Coding:
Java:
query = "SELECT R_ID FROM Verursacherrisiko WHERE R_ID = '";
st = con.createStatement();
rs = st.executeQuery(query + k.getRid() + "'");
if(rs.next())
{
int qu = JOptionPane.showConfirmDialog(new JFrame(), "Das Risiko " + k.getRid() + " ist bereits in der Datenbank enthalten. Soll es mit den Werten der Excel-Datei überschrieben werden?", "Risiko bereits vorhanden!", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if(qu == JOptionPane.YES_OPTION)
{
st.executeUpdate("UPDATE Verursacherrisiko SET "
+ "R_ID = '" + k.getRid()
+ "', V_ID = '" + k.getVid()
+ "', B_ID = '" + k.getOid()
+ "', Q_ID = '" + k.getQuadrant()
+ "', A_ID = '" + k.getAid()
+ "', R_Fehlerursache = '" + k.getUrsache()
+ "', R_Werkzeug = '" + k.getWerkzeug()
+ "' WHERE R_ID = '" + k.getRid() + "';");
}
}
else
{
System.out.println("INSERT INTO Verursacherrisiko (R_ID, V_ID, B_ID, Q_ID, A_ID, R_Fehlerursache, R_Werkzeug) VALUES ("
+ "R_ID = '" + k.getRid()
+ "', V_ID = '" + k.getVid()
+ "', B_ID = '" + k.getOid()
+ "', Q_ID = '" + k.getQuadrant()
+ "', A_ID = '" + k.getAid()
+ "', R_Fehlerursache = '" + k.getUrsache()
+ "', R_Werkzeug = '" + k.getWerkzeug()
+ "');");
st.executeUpdate("INSERT INTO Verursacherrisiko (R_ID, V_ID, B_ID, Q_ID, A_ID, R_Fehlerursache, R_Werkzeug) VALUES ("
+ "R_ID = '" + k.getRid()
+ "', V_ID = '" + k.getVid()
+ "', B_ID = '" + k.getOid()
+ "', Q_ID = '" + k.getQuadrant()
+ "', A_ID = '" + k.getAid()
+ "', R_Fehlerursache = '" + k.getUrsache()
+ "', R_Werkzeug = '" + k.getWerkzeug()
+ "');");
}
rs.close();
st.close();
Beim INSERT passiert dann lt. System.out.println folgendes:
INSERT INTO Verursacherrisiko (R_ID, V_ID, B_ID, Q_ID, A_ID, R_Fehlerursache, R_Werkzeug) VALUES (R_ID = 'R1050', V_ID = 'V9005', B_ID = '98152', Q_ID = 'Q34', A_ID = 'L4', R_Fehlerursache = 'HEUTE', R_Werkzeug = 'ABC33');
Wie gesagt: UPDATE funktioniert ohne Probleme und auch der INSERT mit Verursachern in einer anderen Klasse.
Hat da jmd einen hilfreichen Tipp, was das Problem sein könnte? Ich komme da echt nicht weiter und auch das Netz hat keinen nützlichen Rat. Ein Rechteproblem, wie es oft empfohlen wurde, kann es aus meiner Sicht nicht sein, da UPDATE funktioniert und INSERT in einer anderen Klasse.
Vielen Dank im Voraus.
Viele Grüße
Zuletzt bearbeitet von einem Moderator: