HSQLDB Auf vorhandenen Index prüfen

Felix

Bekanntes Mitglied
Hallo, ich will bevor ich einen neuen Datensatz in meine Tabelle schreibe prüfen, ob der Index schon existiert. Dazu habe ich folgenden Code geschrieben, da es so scheint, als ob der Treiber immer eine Exception wirft, wenn man nach einem nicht vorhandenen Index sucht.

Java:
    private String getIndex() throws SQLException {
        final SimpleDateFormat df = new SimpleDateFormat("ddMMyyHHmmss");
        Calendar c = Calendar.getInstance();
        String index = df.format(c.getTime());

        while (indexExsists(index)){
            int sec = c.get(Calendar.SECOND);
            c.set(Calendar.SECOND, (sec-1));
            index = df.format(c.getTime());
        }
        return index;
    }

    private boolean indexExsists(String index){
        try {
                //DEBUG
                System.out.println("Versuche index: " + index);

                Statement s = connection.createStatement();
                ResultSet rs = s.executeQuery("SELECT box FROM " + table + " WHERE INDEX=\"" + index + "\";");

                return true;
            } catch (SQLException sqle) {
                //DEBUG
                System.out.println("Exception: true");
                return false;
            }
    }

Der Output ist aber nicht sehr erfolgsversprechend:

Java:
Versuche index: 170710180224
Exception: true
Versuche index: 170710180224
java.sql.SQLException: integrity constraint violation: unique constraint or index violation; SYS_PK_10027 table: VOCABLES
Exception: true
        at org.hsqldb.jdbc.Util.sqlException(Util.java:200)
        at org.hsqldb.jdbc.JDBCStatement.fetchResult(JDBCStatement.java:1805)
        at org.hsqldb.jdbc.JDBCStatement.executeUpdate(JDBCStatement.java:206)

Die Tabelle sieht so aus:
Java:
"CREATE TABLE " + table + " (index CHARACTER VARYING(12) NOT NULL PRIMARY KEY, germanimport CHARACTER VARYING(500) NOT NULL, foreignimport CHARACTER VARYING(500) NOT NULL, box SMALLINT DEFAULT 0, knowngf NUMERIC, unknowngf NUMERIC, knownfg NUMERIC, unknownfg NUMERIC, apposition TIMESTAMP DEFAULT LOCALTIMESTAMP, lastinterrogation TIMESTAMP);"

Ich habe es auch mit einem Code versucht, der mit ResultSet.last() und dann ResultSet.getRow() arbeitet, aber das hatte noch weniger Erfolg, da man bis zu dem Code aufgrund der Exception überhaupt nie kam...

Ich komm nicht weiter. Hat jemand einen Tip?
Vielen Dank im Voraus.
 
S

SlaterB

Gast
wenn es den Index schon gibt, klappt dann die Query ohne Exception?
oder in gleicher Situation eine einfache Query a la "select * from table x",
was genau klappt alles, was nicht?
 

Felix

Bekanntes Mitglied
Puh, das war schon wieder ein Syntaxproblem. Wenn ich in der Query den Indexwert nicht mit doppelten Anführungszeichen (") sondern mit einfachen Apostrophen (') angebe, funktioniert es ohne Exception.
Generell bin ich mit der Dokumentation von HSQLDB ziemlich unzufrieden. Ich weiß nie wann ich welche Werte wie angeben muss. Also in Anführungszeichen oder in Apostrophen oder ganz ohne, und ich hab auch immer noch nicht herausgefunden, wie man bei einem NUMERIC-Feld beim Erstellen der Tabelle einen DEFAULT-Wert festlegt.
Hat jemand vllt einen Tipp, wo ich eine bessere und übersichtlichere Dokumentation finde, oder zumindest ein Tutorial?
 

Michael...

Top Contributor
Puh, das war schon wieder ein Syntaxproblem. Wenn ich in der Query den Indexwert nicht mit doppelten Anführungszeichen (") sondern mit einfachen Apostrophen (') angebe, funktioniert es ohne Exception.
Generell bin ich mit der Dokumentation von HSQLDB ziemlich unzufrieden. Ich weiß nie wann ich welche Werte wie angeben muss. Also in Anführungszeichen oder in Apostrophen oder ganz ohne
Von HSQLDB habe ich zwar keine Ahnung, aber verwende PreparedStatements, da muss man sich um solche Dinge keine Gedanken machen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Tabellen von nicht mehr vorhandenen Entities werden generiert Datenbankprogrammierung 0
G Oracle Hibernate M:N-Beziehung mit nur einer vorhandenen Tabelle Datenbankprogrammierung 5
L Struktur einer vorhandenen Datenbanktabelle ändern Datenbankprogrammierung 8
F Auslesen einer .dbf-Datei, Zuordnung Index Datenbankprogrammierung 0
S MySQL SQLException Parameter index out of range (1 > number of parameters, which is 0). Datenbankprogrammierung 10
O PostgreSQL Java Row Index erhalten Datenbankprogrammierung 1
I Hibernate / JPA Index hinzufügen Datenbankprogrammierung 1
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
N Problem bei Erstellung eines Index Datenbankprogrammierung 12
C Hibernate Objekte per Index ansprechen Datenbankprogrammierung 4
F index erzeugen Datenbankprogrammierung 6
K Hibernate Criteria Restrictions.in("...","..") - Fehlender In- oder OUT-Parameter auf Index:: 1 Datenbankprogrammierung 3
F Problem mit einer Sql Index Datenbankprogrammierung 2
X Index auf Varchar??? Datenbankprogrammierung 17
G Hibernate @Index Datenbankprogrammierung 7
A Index bzw. Indizes von Tabellen herausfinden Datenbankprogrammierung 3
R Unknown initial character set index . received from server Datenbankprogrammierung 5
N ID des Datensatzes aus JTable holen (nicht Index!) Datenbankprogrammierung 4
S Index einer editierten spalte? Datenbankprogrammierung 4
T Spring MongoDB: Prüfen ob bereits eine Email existiert Datenbankprogrammierung 15
zhermann H2 DB prüfen od sie neu ist Datenbankprogrammierung 4
B SQL-Statement Prüfen ob eine Spalte einen Wert enthält Datenbankprogrammierung 2
E Kann man in DB2 gegen ein XML-Schema prüfen? Datenbankprogrammierung 1
D MySQL DB Abfrage Prüfen Datenbankprogrammierung 10
H JDBC prüfen ob Table existiert Datenbankprogrammierung 3
A SQL-Statement prüfen Datenbankprogrammierung 3
C Prüfen, ob eine MySQL-Tabelle bereits existiert Datenbankprogrammierung 7
klattiator Primärschlüssel auf Existenz prüfen Datenbankprogrammierung 6
R Prüfen ob Tabelle existiert? Datenbankprogrammierung 4
K Prüfen ob Tabelle schon vorhanden Datenbankprogrammierung 7
G Tabel prüfen Datenbankprogrammierung 5
S connectionstatus prüfen Datenbankprogrammierung 9
K ResultSet prüfen,ob es leer ist oder ob vorhanden Datenbankprogrammierung 2

Ähnliche Java Themen


Oben