2016-10-03 1 views
0

Ich möchte überprüfen, ob eine Tabelle existiert, bevor ich ein neues erstelle. Ich verwende die folgende Methode:Überprüfen Sie, ob Tabelle in Informix und PostgreSQL-Datenbank vorhanden ist

DatabaseMetaData dbmd = con.getMetaData(); 
ResultSet rs = dbmd.getTables(null, null, getTableNamePattern(), null); 
if (rs != null) { 
    if (rs.next()) { 
     return true; 
    } 
} 

Es war wohlauf für Datenbanken wie Oracle, SQLServer und mysql. Es funktioniert jedoch nicht auf Informix und PostgreSQL. Hat jemand einen guten Vorschlag? Danke

+1

'Tabelle erstellen, wenn nicht existiert ...' wird es in Postgres tun. – Bill

+1

Klein-/Großschreibung Problem? Postgres speichert die Tabellennamen in Kleinbuchstaben, daher müssen Sie das Muster auch in Kleinbuchstaben übergeben. –

+0

Ich glaube nicht, dass Java-Code solche Überprüfungen durchführen sollte. Entweder existiert das Schema und wurde vor dem Start der Java-Anwendung ordnungsgemäß von einem Administrator initialisiert oder nicht. – duffymo

Antwort

0

Ich habe es gerade auf PostgreSQL versucht und es funktioniert gut.

Das Problem liegt wahrscheinlich in Ihrem Suchmuster. Hier sind einige Dinge im Auge zu behalten:

  • _ wird als Platzhalter für einen einzelnen Buchstaben verwendet, % als Platzhalter für eine beliebige Zeichenfolge.

  • Bei dem Muster wird zwischen Groß- und Kleinschreibung unterschieden, und Tabellennamen werden in PostgreSQL standardmäßig klein geschrieben.

+0

Sollte ich% als Parameter anwenden und es als Standard festlegen, wenn ich die Suche mache? –

+0

Ich verstehe die Frage nicht. Verwenden Sie 't%', um nach allen Tabellen zu suchen, deren Namen mit 't' beginnen, aber erwarten Sie nicht, dass sie auch mit einem großen' T' übereinstimmen. –

+0

Danke für Ihre Antwort. Ich nehme auch Jonathan Lefflers Antwort. Ich bekomme es zu arbeiten, nachdem ich den eingehenden Tabellennamen in Kleinbuchstaben gesetzt habe. –

Verwandte Themen