# Verbindung zu Derby Datenbank funktioniert nicht



## jupper (12. Mrz 2015)

Hallo allerseits,

ich wollte mich jetzt mal um die Datenbankprogrammierung bemühen. Allerdings klappt es nicht ganz so wie ich will. 

Ich habe eine Datenbank erstellt die ist in "jdbc:derby:/home/valentin/databases/zadb;create=true" gespeichert. Jetzt wollte ich die mit folgendem Code ansprechen und bekam eine Fehlermeldung.


```
import java.sql.*;

public class Test {
	
	static final String URL = "dbc:derby:/home/valentin/databases/zadb;create=true";

	
	public static void main(String[] args) {
		
		try (Connection verbindung = DriverManager.getConnection(URL);
			Statement sqlKdo = verbindung.createStatement();
			ResultSet daten = sqlKdo.executeQuery("Select title FROM Footable")){
			ResultSetMetaData metaDaten = daten.getMetaData();
			System.out.println(metaDaten.getColumnName(1));
			
		while (daten.next())
			System.out.println (daten.getString(1));
		} catch (Exception e){
			e.printStackTrace();

	}
	}

}
```

java.sql.SQLException: No suitable driver found for dbc:derby:/home/valentin/databases/zadb;create=true
	at java.sql.DriverManager.getConnection(DriverManager.java:596)
	at java.sql.DriverManager.getConnection(DriverManager.java:233)
	at Test.main(Test.java:10)


----------



## strußi (12. Mrz 2015)

Hey, hast du die derby.jar in deinen projektordner kopiert?


----------



## jupper (12. Mrz 2015)

Ja die habe ich kopiert.


----------



## fehlerfinder (13. Mrz 2015)

jupper hat gesagt.:


> Ich habe eine Datenbank erstellt die ist in "jdbc:derby:/home/valentin/databases/zadb;create=true" gespeichert. Jetzt wollte ich die mit folgendem Code ansprechen und bekam eine Fehlermeldung.
> 
> 
> ```
> ...



Ich behaupte mal, da fehlt ein "j" - wo? Such mal, dann denkst du beim nächsten Mal gleich daran ;-)


----------



## jupper (13. Mrz 2015)

fehlerfinder hat gesagt.:


> Ich behaupte mal, da fehlt ein "j" - wo? Such mal, dann denkst du beim nächsten Mal gleich daran ;-)



Oh man, danke ;-).

Das bringt mich aber gleich zum nächsten Fehler. Ich hänge mal ein Bild an.

Hier die Fehlermeldungen.


```
java.sql.SQLSyntaxErrorException: Table/View 'ZANEACADEMY' does not exist.
	at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
	at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(Unknown Source)
	at Test.main(Test.java:12)
Caused by: ERROR 42X05: Table/View 'ZANEACADEMY' does not exist.
	at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
	at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
	at org.apache.derby.impl.sql.compile.FromBaseTable.bindTableDescriptor(Unknown Source)
	at org.apache.derby.impl.sql.compile.FromBaseTable.bindNonVTITables(Unknown Source)
	at org.apache.derby.impl.sql.compile.FromList.bindTables(Unknown Source)
	at org.apache.derby.impl.sql.compile.SelectNode.bindNonVTITables(Unknown Source)
	at org.apache.derby.impl.sql.compile.DMLStatementNode.bindTables(Unknown Source)
	at org.apache.derby.impl.sql.compile.DMLStatementNode.bind(Unknown Source)
	at org.apache.derby.impl.sql.compile.CursorNode.bindStatement(Unknown Source)
	at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
	at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
	... 3 more
```

Ich möchte die Tabelle Channels ansprechen.


----------



## fehlerfinder (13. Mrz 2015)

jupper hat gesagt.:


> ```
> java.sql.SQLSyntaxErrorException: Table/View 'ZANEACADEMY' does not exist.
> [...]
> ```
> ...



Das tust du aber nicht. Wenn du mal dein Statement anschaust (und hier wäre es besser, das Stück Code anzuhängen als das Statement, dann lässt sich das als Zitat verwenden), steht da "select channels from zaneacademy" - kann es sein, dass dir ein paar SQL-Grundlagen fehlen? Tatsächlich sprichst du hier die Tabelle "zaneacademy" an.


----------



## jupper (13. Mrz 2015)

Aber selbst wenn ich die Passage ändere zu 


```
ResultSet daten = sqlKdo.executeQuery("Select Channel FROM Channels")){
```

Kommt die Fehlermeldung.


----------



## fehlerfinder (13. Mrz 2015)

jupper hat gesagt.:


> Kommt die Fehlermeldung.


Welche genau?


----------



## jupper (13. Mrz 2015)

Wieder die gleiche:


```
java.sql.SQLSyntaxErrorException: Table/View 'CHANNELS' does not exist.
	at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
	at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(Unknown Source)
	at Test.main(Test.java:12)
Caused by: ERROR 42X05: Table/View 'CHANNELS' does not exist.
	at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
	at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
	at org.apache.derby.impl.sql.compile.FromBaseTable.bindTableDescriptor(Unknown Source)
	at org.apache.derby.impl.sql.compile.FromBaseTable.bindNonVTITables(Unknown Source)
	at org.apache.derby.impl.sql.compile.FromList.bindTables(Unknown Source)
	at org.apache.derby.impl.sql.compile.SelectNode.bindNonVTITables(Unknown Source)
	at org.apache.derby.impl.sql.compile.DMLStatementNode.bindTables(Unknown Source)
	at org.apache.derby.impl.sql.compile.DMLStatementNode.bind(Unknown Source)
	at org.apache.derby.impl.sql.compile.CursorNode.bindStatement(Unknown Source)
	at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
	at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
	... 3 more
```


----------



## fehlerfinder (13. Mrz 2015)

jupper hat gesagt.:


> Wieder die gleiche:
> 
> 
> ```
> ...



Und wie kommst du auf die Idee, dass deine Datenbank, die, wenn ich das richtig lese, ja erst im Programm erstellt wird ("create = true"), eine Tabelle namens "channels" enthält?


----------



## jupper (14. Mrz 2015)

Die Datenbank habe ich ja vorher erstellt. Auf dem Bild siehst du die Struktur gut, denke ich mal.


----------



## fehlerfinder (14. Mrz 2015)

Warum steht dann in dem URL ein "create=true"? Kann es sein, dass du damit jedes Mal die Datenbank übrschreibst?

Andere Herangehensweise: deine Tabellen sind unterhalb von "ZANEACADEMY" angeordnet. Ist das der Benutzer, mit dem du dich mit der DB verbindest? Ich sehe da so recht keine Benutzerdaten in deinem Quellcode.


----------



## Joose (17. Mrz 2015)

fehlerfinder hat gesagt.:


> Andere Herangehensweise: deine Tabellen sind unterhalb von "ZANEACADEMY" angeordnet.



Dabei handelt es sich um das Schema 

Der Fehler liegt wahrscheinlich darin das du zwar sagst zu welcher DB du dich verbinden willst.
Aber beim SELECT schaut er im falschen Schema nach und findet die entsprechende Tabelle nicht.


----------



## fehlerfinder (17. Mrz 2015)

Joose hat gesagt.:


> Dabei handelt es sich um das Schema



Hey, du nimmst mir meinen kompletten "pädagogischen Fahrtwind" aus den Segeln; da sollte der Kollege doch selber drauf kommen


----------



## Joose (17. Mrz 2015)

fehlerfinder hat gesagt.:


> Hey, du nimmst mir meinen kompletten "pädagogischen Fahrtwind" aus den Segeln; da sollte der Kollege doch selber drauf kommen



Soweit habe ich nicht gedacht  Sorry!


----------

