# User lacks privilege or object not found



## MarDaiBre (28. Sep 2014)

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:

```
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


----------



## Kevin94 (7. Okt 2014)

Bist du dir sicher, dass du für die andere Tabelle das selbe SQL für INSERT hast? Weil das sieht für mich ziemlich nach einer sehr schlechten formulierten Fehlermeldung für nen Fehler im SQL aus, außerdem widerspricht der Befehlt meinen Kenntnissen von SQL (MySQL und H2). imo müsste der INSERT Befehl nämlich lauten:

```
INSERT INTO Verursacherrisiko (R_ID, V_ID, B_ID, Q_ID, A_ID, R_Fehlerursache, R_Werkzeug)
VALUES ( 'R1050', 'V9005', '98152', 'Q34', 'L4', 'HEUTE', 'ABC33');
```


----------



## Thallius (7. Okt 2014)

Ja, der INSERT hat die falsche Syntax. Korrigier die mal und dann schau weiter.

Gruß

Claus


----------



## MarDaiBre (8. Okt 2014)

Hallo,
oh Mann, tatsächlich :roll: Da erkennt man tatsächlich das Wesentliche nicht mehr... Danke für eure Hilfe!


----------

