Derby/JavaDB Datenbankanbindung Eclipse und Derby

jupper

Aktives Mitglied
Hallo,

ich habe mich wieder mal an die Datenbanken rangewagt, und mal dieses Tutorium benutzt. Klappt alles soweit fehlerfrei, kann die Datenbank anpingen. Allerdings, wenn ich versuche die Datenbank mit Java anzusprechen kommen Fehlermeldungen.

Java:
import java.sql.*;

public class test {
	private static String dbURL = "jdbc:derby:/home/valentin/MyDB;create=true";
	private static String tableName = "buchverwaltung.buecher";

	// jdbc Connection
	private static Connection conn = null;
	private static Statement stmt = null;

	public static void main(String[] args) {
		createConnection();
		insertBuecher(3, "978-3-86870-393-1", "W. Honekamp", "ReDiRoma", 2011, 194,"Görlitz");
		selectBuecher();
		shutdown();
	}

	private static void createConnection() {
		try {
			Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
			//Konnektivität herstellen
			conn = DriverManager.getConnection(dbURL); 
		} catch (Exception except) {
			except.printStackTrace();
		}
	}

	private static void selectBuecher() {
		try {
			stmt = conn.createStatement();
			ResultSet results = stmt.executeQuery("select * from " + tableName);
			ResultSetMetaData rsmd = results.getMetaData();
			int numberCols = rsmd.getColumnCount();

			for (int i=1; i<=numberCols; i++) {
				//print Column Names
				System.out.print(rsmd.getColumnLabel(i)+"tt");  
			}
			System.out.println("n--------------------------------------------------------------------------------");
			while(results.next()) {
				int id = results.getInt(1);
				String isbn = results.getString(2);
				String autor = results.getString(3);
				String verlag = results.getString(4);
				int jahr = results.getInt(5);
				int seiten = results.getInt(6);
				String standort = results.getString(7);	                 
				System.out.println(id + "tt" + isbn + "tt" + autor + "tt" + verlag + "tt" + jahr + "tt" + seiten + "tt" + standort);
			}
			results.close();
			stmt.close();
		} catch (SQLException sqlExcept) {
			sqlExcept.printStackTrace();
		}
	}

	private static void shutdown() {
		try {
			if (stmt != null) {
				stmt.close();
			}
			if (conn != null) {
				DriverManager.getConnection(dbURL + ";shutdown=true");
				conn.close();
			}           
		} catch (SQLException sqlExcept) {    
		}
	}

	private static void insertBuecher(int id, String isbn, String autor, String verlag, int jahr, int seiten, String standort) {
		try {
			stmt = conn.createStatement();
			String sqlstring = "insert into " + tableName + " values " + "(" + id + ",'" + isbn + "','" + autor + "','" + verlag + "'," + jahr + "," + seiten + ",'" + standort +"')";
			// System.out.println(sqlstring);
			stmt.execute(sqlstring);
			stmt.close();
		} catch (SQLException sqlExcept) {
			sqlExcept.printStackTrace();
		}
	}
}


Code:
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 
java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:191)
	at test.createConnection(test.java:48)
	at test.main(test.java:29)
Exception in thread "main" java.lang.NullPointerException
	at test.insertBuecher(test.java:191)
	at test.main(test.java:31)
 
Zuletzt bearbeitet von einem Moderator:
Die NullPointer ist nur ein Folgefehler der anderen Fehlermeldung.

Die JAR mit dem Derby "ClientDriver" kann nicht gefunden werden. Richtige JAR auch richtig eingebunden?
 
Ich habe in dem Projekt einen weiteren Ordner erstellt, diesen dann Derby genannt und zunächst die derby.jar, als es dann nicht geklappt hat, alle .jar Dateien aus dem Bin Ordner reinkopiert. Ich habe mal einen Screenshot angefügt.Anhang anzeigen 7925

Den Quellcode nicht beachten, der ist von einem anderen Projekt.
 
Zuletzt bearbeitet:
Der Anhang ist ungültig!

Auf der Webseite von Derby gibt es mehrere Beschreibungen was zu konfigurieren ist, um Derby zu verwenden. Schaue dir außerdem auch an wie du JARs in dein Projekt einbinden kannst (Classpath usw.)
 

Neue Themen


Zurück
Oben