Warum ist meine Connection null?

Status
Nicht offen für weitere Antworten.

richardkrieger

Aktives Mitglied
Hallo,

bin neu hier und das sind meine ersten "gehversuche" mit Java

Habe eine Klasse für Datenbankzugriffe geschrieben. Eine Methode dieser Klasse sollte die Verbindung liefern, liefert aber null:
Code:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import java.sql.Statement;
import java.sql.ResultSet;

public class DerbyDB {

	static final String Treiber = "org.apache.derby.jdbc.EmbeddedDriver";
	static final String protokol="jdbc:derby:";
	Properties userdaten=new Properties();
	SprachDatei sprache=new SprachDatei();
	
	public String getEinzel(String tabelle, String rgfeld, String suchfeld, String suchtext){
		String resultat="";
		String befehl="";
		try{
		Connection datenbank=verbinde();

		Statement bsatz=datenbank.createStatement();  // Hier meldet Compiler eine NullPointerException, da "datenbank" den Wert "null" hat

		befehl="SELECT "+rgfeld+" FROM "+tabelle+" WHERE "+suchfeld+"="+suchtext;
		ResultSet dbrg=bsatz.executeQuery(befehl);
		resultat=dbrg.getString(suchfeld);
		dbrg.close();
		bsatz.close();
		datenbank.commit();
		datenbank.close();
		} catch (SQLException sqlex){
			new FehlerFenster(sprache.uebersetze("SQLEXCEPTION"),sqlex.toString());
		}
		return resultat;
	}
	
	private Connection verbinde(){
		Connection verbindung=null;
		try{
			Class.forName(Treiber).newInstance();
			userdaten.put("user","benutzer");
			userdaten.put("password","kennwort");
			verbindung=DriverManager.getConnection(protokol+"FHNdata;create=true",userdaten);
			verbindung.setAutoCommit(false);
		} catch (SQLException sqlex){
			new FehlerFenster(sprache.uebersetze("SQLEXCEPTION"),sqlex.toString());
		}  catch (ClassNotFoundException knfex){
			new FehlerFenster(sprache.uebersetze("CLASS_NOT_FOUND_EXCEPTION"),knfex.toString());
		} catch (InstantiationException inex){
			new FehlerFenster(sprache.uebersetze("INSTANTIATION_EXCEPTION"),inex.toString());
		} catch(IllegalAccessException iaex){
			new FehlerFenster(sprache.uebersetze("ILLEGAL_ACCESS_EXCEPTION"),iaex.toString());
		}
		return verbindung;

	}
	
}

Debug (Eclipse) zeigt, dass "datenbank" den Wert "null" hat und ich bekomme logischerweise eine NullPointerException

Methode "verbinde" zeigt keine Fehler. Compiler zeigt den Fehler in "getEinzel". Habe ich was übersehen?
 

AlArenal

Top Contributor
Jede Wette, dass du auf der Konsole noch nen Stacktrace hast.. Mach doch in #verbinde noch ein catch (Exception e) am Ende und schau ob da was landet (expect the unexpected).

BTW, wenn das wirklich dein erster Gehversuch in Java ist, gibst du dir zwar echt viel Mühe, machst es aber unnötig kompliziert. Brings doch erstnmal zum Laufen, ehe du dich an die Kosmetik machst und damit zusätzliche Fehlerquellen einbaust.
 

richardkrieger

Aktives Mitglied
habe ich gemacht:
Code:
		} catch (Exception e){
			System.out.println(e.toString());
		}
da landet aber nach wie vor:
Exception in thread "main" java.lang.NullPointerException
at fhnclient.DerbyDB.getEinzel(DerbyDB.java:46)
at fhnclient.HauptFenster.main(HauptFenster.java:19)

HauptFenster:19 - aufruf DerbyDB().getEinzel("tabelle","wertspalte","suchspalte","suchwert")
DerbyDB:46 - ist die Zeile, die ich oben im Listing beschrieben habe
 

hupfdule

Top Contributor
In deiner verbinde() Methode muss ein Fehler aufgetreten sein. Du gibst immer den Wert von 'datenbank' zurück. Dieser kann null sein, wenn etwas schief gelaufen ist. Der Fehler muss auch spätestens in Zeile 43 deines obigen Listings auftreten, da du sonst bereits in Zeile 44 die NPE bekommen würdest.

Könnte dein Fehlerfenster vlt. Mist bauen, dass du die Fehlermeldung einfach nicht siehst?

BTW: Du solltest in deinen catch-Blöcken trotzdem den Stacktrace mit ausgeben. Hilft dir bei der Fehlersuche stark weiter. Oder zumindest an dein Fehlerfenster weiter geben und dort anzeigen.
 

richardkrieger

Aktives Mitglied
Fehler habe ich gefunden, obwohl es meiner Meinung nach kein Fehler ist. Ich verstehe nicht warum, aber es funktioniert jetzt

Habe folgendes gemacht: anstatt
Code:
verbindung=DriverManager.getConnection(protokol+"FHNdata",userdaten);
Habe ich jetzt
Code:
verbindung=DriverManager.getConnection("jdbc:derby:FHNdata",userdaten);
... es ist merkwürdig.

was anderes: dbEdit sperrt anscheinend die Datenbank, und zwar so, dass auch ein Disconnect nicht hilft - ich muss Eclipse neu starten. Kann man es irgendwie korrigieren(Einstellungen oder so)? Ist zwar nicht schlimm aber etwas lästig :)

Danke für die Hilfe !!!
 

hupfdule

Top Contributor
Ähm, also den Unterschied zwischen
Code:
String protokoll="jdbc:derby:";
protokoll+"FHNdata";
und
Code:
"jdbc:derby:FHNdata"
seh ich grad auch nicht. Bist du sicher, dass das zum Problem geführt hat? Das kann nicht wirklich sein.

dbEdit sperrt anscheinend die Datenbank
Was ist dbEdit?
 

richardkrieger

Aktives Mitglied
... das meine ich auch. Ich sehe da keinen Unterschied, aber egal. Vor etwa 10 Jahren habe ich mich mit Turbo Pascal beschäftigt. Da gab es auch solche merkwürdigen Sachen. Seitdem code ich nach dem Prinzip: "richtig ist das, was funktioniert".

Es kann natürlich auch daran liegen, dass das meine ersten "gehversuche" sind und ich irgendwas nicht berücksichtigt habe, weil ich es einfach noch nicht weiss.

dbEdit ist Plugin für Eclipse(guck auf sourceforge.net) für Datenbankarbeit. Habe einen anderen Thread wegen Derby hier gestartet und ein Gast hat mit einem Link geantwortet, wo eine sehr gute Doku liegt. Anscheinend kann man auch ohne dbEdit mit Derby-eigenen Plugins für Eclipse arbeiten. Wie gesagt, bin ein Anfänger und weiss noch nicht unter welchen Menüpunkt was liegt :)

Gruss Richard
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Meine Datenbank lässt sich mit meiner Methode nicht ändern Datenbankprogrammierung 1
J SQLite Ich muss für mein Projekt meine Datenbank Kapseln Datenbankprogrammierung 2
J SQL-Statement Meine insert befehle funktionieren nicht und ich weiß nicht wo der fehler liegt Datenbankprogrammierung 5
S Wie muss meine SQL Tabelle aufgebaut sein, um unendliche Attribute zu vermeiden Datenbankprogrammierung 2
G Ist meine Datenbank-Schnittstelle threadsicher? Datenbankprogrammierung 3
J Suche für meine Anwendung optimale Datenbank ! Datenbankprogrammierung 26
Maxim6394 EclipseLink + SQLite | Unable to acquire a connection from driver [null] Datenbankprogrammierung 6
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
S Oracle DB-Connection in .jar file ändern Datenbankprogrammierung 11
yakazuqi MySQL MySQL Connection reset Datenbankprogrammierung 7
K Glassfish 4.1.1 Connection Pool u. Resource Ref Datenbankprogrammierung 20
OnDemand Hikari Pool Connection Validation Datenbankprogrammierung 18
Dimax MySQL Methodenaufruf mit Connection Übergabe Datenbankprogrammierung 8
D MySQL Connection richtig herstellen. Wie ? Datenbankprogrammierung 7
D Multiple Connection mit MySQL Datenbankprogrammierung 4
S Connection Pool Hikari Datenbankprogrammierung 7
P MySQL Connection Global Datenbankprogrammierung 13
J Connection Datenbankprogrammierung 1
F Brauche dringend Hilfe Java-Access Connection Datenbankprogrammierung 3
S New Connection Wizard / NetBeans Datenbankprogrammierung 0
P Frage zu Connection.close() Datenbankprogrammierung 4
T NoSQL Connection für die Thesis [GWT] Datenbankprogrammierung 1
M Connection erstellen Datenbankprogrammierung 1
F Monitoring DB Connection Pool Datenbankprogrammierung 3
H JDBCODBC - Connection-Objekt Datenbankprogrammierung 3
E MySQL SQL - wann connection schließen Datenbankprogrammierung 2
R HSQLDB Connection refused Datenbankprogrammierung 2
B JDBC Connection Fehler Datenbankprogrammierung 8
B JDBC-Connection: Data source name too long Datenbankprogrammierung 3
crashfinger jdbc-connection mit jre7 funktioniert nicht Datenbankprogrammierung 5
reibi Derby/JavaDB Connection refused Datenbankprogrammierung 14
S Ressourcenverbrauch Connection Open/Close Datenbankprogrammierung 11
W MySQL-Connection-Objekt übergeben Datenbankprogrammierung 2
N SQL-Connection Datenbankprogrammierung 3
B MySQL Datenbank Connection als String zurückgeben Datenbankprogrammierung 7
M Connection Pooling Datenbankprogrammierung 7
B MySQL Fehler: Cannot open connection mit Tomcat7, Hibernate und MySQL Datenbankprogrammierung 4
K Connection - möglich & nicht möglich Datenbankprogrammierung 2
T Datenbank connection mit Servlet Datenbankprogrammierung 4
S Applet stucks at SQL Connection (jTDS JDBC) Datenbankprogrammierung 15
c_sidi90 JDBC Oracle Connection schlägt fehl Datenbankprogrammierung 2
H H2 H2-Connection bei WebStart Datenbankprogrammierung 6
JavaKaffee Derby/JavaDB Quartz-WebAnwendung - Connection/Treiber Problem Datenbankprogrammierung 47
ruutaiokwu jdbc connection als singleton Datenbankprogrammierung 11
S Wie überprüfe ich ob die Instanz einer Connection gerade werwendet wird? Datenbankprogrammierung 4
X Connection schließen oder speichern? Performance Frage Datenbankprogrammierung 7
C Derby/JavaDB JavaDB: Keine Connection Datenbankprogrammierung 7
T Pooled Connection und Connection Pool Datenbankprogrammierung 2
S Java Connection to MySQL Datenbank FunPic Datenbankprogrammierung 4
Q java.lang.NullPointerException connection = null Datenbankprogrammierung 13
N Connection bleibt null Datenbankprogrammierung 7
H DB-Connection zu MySQL Datenbankprogrammierung 12
D Wie bekommt man die JDBC connection zum laufen?(Eclipse) Datenbankprogrammierung 16
T MySQL ResultSet zurückgeben nachdem Connection geschlossen wurde? Datenbankprogrammierung 3
B db2 jdbc connection Datenbankprogrammierung 4
G MySQL Connection Problem Datenbankprogrammierung 3
R sql.Connection vs. mysql.Connection Datenbankprogrammierung 3
R Connection Pooling - Tote Verbindungen Datenbankprogrammierung 5
S Connection Pool Datenbankprogrammierung 23
P JPA Connection dynamisch hinzufügen Datenbankprogrammierung 2
S JDBC connection open Datenbankprogrammierung 3
D MySQL Verständnisproblem mit globalen Variablen (Connection) Datenbankprogrammierung 7
F Connection refused: connect Bei Verbindungsherstellung zu MySQL Datenbank Datenbankprogrammierung 3
R Connection Problem für eine externe DB mit Java (JDBC) Datenbankprogrammierung 9
R Connection nur als root Datenbankprogrammierung 3
N Connection kann nicht geschlossen werden!? Datenbankprogrammierung 4
S JPA Hibernate: "The user must supply a jdbc connection" Datenbankprogrammierung 4
F MySQL - Connection JDBC-Driver Problem Datenbankprogrammierung 4
E MSSQL-Server connection aufbau sehr langsam Datenbankprogrammierung 2
S Zuviele DB Connection Datenbankprogrammierung 4
A Connection Variable in anderer Klasse verwenden -> statement Datenbankprogrammierung 2
S Connection String MS Access mit Systemdatenbank / Arbeitsgruppeninformationsdatei Datenbankprogrammierung 4
R DB-Connection, aber wie? Datenbankprogrammierung 2
F Java SQL Connection mit Rollback Datenbankprogrammierung 2
P DB- Connection lösen Datenbankprogrammierung 7
padde479 Connection String Oracle Datenbankprogrammierung 5
W JDBC Connection isValid()? Datenbankprogrammierung 4
G Frage zu connection? Datenbankprogrammierung 9
G allgemeine JDBC-Connection Frage Datenbankprogrammierung 2
H Wie kann ich eine Datenbank Connection aus XML-Datei lesen! Datenbankprogrammierung 2
J jdbc Oracle Connection refused Datenbankprogrammierung 6
D Probleme mit mysql-Connection Datenbankprogrammierung 10
K Wo "Connection" Object erstellen? Datenbankprogrammierung 7
N Kleine Frage zu Connection Pooling mit DataSource Datenbankprogrammierung 2
M Hilfe - keine Connection zur DB Datenbankprogrammierung 4
G Connection zu einer Oracle DB erstellen Datenbankprogrammierung 8
K Oracle XE Connection Problem Datenbankprogrammierung 2
S Connection/Statement/ResultSet auf einmal geschlossen Datenbankprogrammierung 8
C Resultset nach connection close weiterreichen Datenbankprogrammierung 5
G SQL Server Connection Datenbankprogrammierung 12
K "Connection timed out: connect" bei MySQL-Verbindu Datenbankprogrammierung 10
B Connection Pools Datenbankprogrammierung 3
U Connection läuft nicht als jar Datenbankprogrammierung 6
R Interessantes Problem mit Connection-Pool. Datenbankprogrammierung 2
C Statement/Connection SQLWarning Datenbankprogrammierung 4
P Connection problems Datenbankprogrammierung 15
J Keine Connection zur MySQL Db Datenbankprogrammierung 6
K db connection wann schließen Datenbankprogrammierung 4
W Problem bei Connection mit SQLServer-Datenbanke mittels Java Datenbankprogrammierung 2
S Viele Klassen sollen eine Connection benutzen Datenbankprogrammierung 3

Ähnliche Java Themen


Oben