java.sql.SQLException: No suitable driver found for ‘jdbc:derby:…

Kleine Gemeinheit im “Using dblook” guide (Übersichtslink):

dblook -verbose -d ‘jdbc:derby:pathToDBDBName’

— Zeitmarke: 2010-01-04 12:27:34.578
— Quellendatenbank: pathToDBDBName
— Verbindungs-URL: ‘jdbc:derby:pathToDBDBName
— appendLogs: false

java.sql.SQLException: No suitable driver found for ‘jdbc:derby:pathToDBDBName
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at org.apache.derby.tools.dblook.go(Unknown Source)
at org.apache.derby.tools.dblook.(Unknown Source)
at org.apache.derby.tools.dblook.main(Unknown Source)
— **–> DEBUG: No suitable driver found for ‘jdbc:derby:pathToDBDBName

(Fast) Derselbe Aufruf geht via ij und NetBeans …

Lösung: dblook -d jdbc:derby:pathToDBDBName
Unterschied: einfach ohne die Hochkommata, auch wenn es im Guide immer wieder mal mit Gänsefüßchen steht.

Create Table IF NOT EXISTS … in JavaDB/Derby

In MySQL gibt es das praktische Konstrukt “Create Table IF NOT EXISTS foo”.
Möchte man dieselbe Funktionalität in Apache Derby/JavaDB, wird oft empfohlen, ein
Select auf die entsprechende Tabelle durchzuführen und die entsprechende Exception
abzufangen (siehe z.B. hier). – Für ambitionierte Programmierer nur bedingt akzeptabel,
da Flußkontrolle durch Exceptions nur im Ausnahmefall eine schöne Lösung darstellt (siehe z.B. hier).

Eine schönere Lösung ist es, zu prüfen, ob die Tabelle (hier “Foo”) existiert, um dann ohne Exception
entsprechen reagieren zu können:

DatabaseMetaData dmd = conn.getMetaData();
ResultSet rs = dmd.getTables(null,”APP”, “FOO”,null);
if (!rs.next()) {
s.executeUpdate(“CREATE TABLE FOO (I INT)”);
}