Problem mit JDBC

Status
Nicht offen für weitere Antworten.

megachucky

Bekanntes Mitglied
habe folgendes problem:


habe eine gui, und möchte über einen button eine sql abfrage machen. es kommt aber immer folgende nullpointer exception in dieser zeile:


Code:
	stmt = conn.createStatement();

allerdings hab ich ja vorher wie in meinem tut beschrieben:

Code:
Statement stmt = null
gemacht, was fehlt hier noch?

= new Statement() ist ja nicht möglich.


vorher hatte ich eine nullpointer exception an dieser stellen:

Code:
conn = dataBaseConnection.getConn();

hab dann einfach:

Code:
 dataBaseConnection = new DataBaseConnection();
davor gemacht, dann kam der fehler nicht mehr.

ich nehme aber an, das ist schon nicht ok, oder? aber wie löse ich das sonst?



ich habe die datenbank connection in einer anderen klassen als das statement, ich nehme an es liegt irgendwie da dran, finde aber keine lösung (die datenbankverbindung klappt übrigens einwandfrei).

evtl geht dass mit der getConn() methode nicht, aber wenn das der grund ist, warum geht es so nicht, und wie muss ich es machen? ich möchte auf jeden fall die connection und die selects in unterschiedliche klassen machen, das geht ja sicher, oder?

hier die nötigen klassen:


Code:
package version1_1;

/**
 * DataBaseConnection connects to the MYSQL Database and opens a SQL Window if the
 * connection was done successfully.
 * 
 * @author CHUCKY
 * @version 1.1 Build 02.01.2005
 * 
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DataBaseConnection 
{
	private Connection conn = null;
	private SQLWindow sqlWindow;
	
	public DataBaseConnection()
	{
		
	}
	/**
	 * Connects to the MYSQL DataBase and opens a SQLWindow
	 * if the connection was done successfully.
	 *
	 */
	public void connectToDataBase()
	{
		String driver = "com.mysql.jdbc.Driver";
		
		try
		{
			Class.forName(driver).newInstance();
			System.out.println("Class Loaded.");
		}
		catch (Exception e)
		{
			System.out.println("Class not found.");
			e.printStackTrace();
		}
		
		String password = "dummies";
		String url = "jdbc:mysql://localhost:3306/";
		String dataBase = "coffeebreak";
		String user = "root";
		
		try 
		{
			conn = DriverManager.getConnection(url+dataBase, user, password);
			System.out.println("Connection done.");
			sqlWindow = new SQLWindow("SQL Window");
		}
		catch (SQLException sqle)
		{
			System.err.println("Connection failed with: " + url + dataBase + " "
					+ user + " " + password);
			System.err.println("Error message: " + sqle.getMessage());
		}
	}
	
	
	/**
	 * @return Returns the conn.
	 */
	public Connection getConn() {
		return conn;
	}
}



Code:
package version1_1;

/**
 * DataBaseOperationsImpl implements the functions from the DataBaseOperations
 * Interface.
 * 
 * @author CHUCKY
 * @version 1.1 Build 03.01.2005
 */

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DataBaseOperationsImpl implements DataBaseOperations
{
	private Connection conn;
	
	private DataBaseConnection dataBaseConnection;
	
	public DataBaseOperationsImpl()
	{
		
	}
	/**
	 *  Does the first query in this application. (only for test purposes)
	 */
	public void doQuery()
	{
		dataBaseConnection = new DataBaseConnection();
		conn = dataBaseConnection.getConn();
		Statement stmt = null;
		ResultSet rset = null;
		String doQuery = "SELECT COF_NAME FROM COFFEES";
		String cof_name = "";
		
		try 
		{
			stmt = conn.createStatement();
			
			rset = stmt.executeQuery(doQuery);
			
			while (rset.next())
			{
				rset.getString("COF_NAME");
				System.out.println(cof_name + " ");
			}
		}
		catch (SQLException sqle)
		{
			System.err.println("SQL Exception: ");
			System.err.println(sqle.getMessage());
		}
	}
}

Code:
package version1_1;

/**
 * Creates a new Window where you can make queries and manipulations to the
 * connected database.
 * 
 * @author CHUCKY
 * @version 1.1 Build 02.01.2005
 */

import java.awt.Container;
import java.awt.FlowLayout;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;



public class SQLWindow extends JFrame implements ActionListener
{
	private JButton doQueryButton;
	private DataBaseOperationsImpl dataBaseOperationsImpl;
	private String doQuery = "doQuery";
	
	public SQLWindow(String title)
	{
		super(title);
		
		JFrame.setDefaultLookAndFeelDecorated(true);
		
		Container contentPane = getContentPane();
		contentPane.setLayout(new FlowLayout());
		
		addButtons();
		
		contentPane.add(doQueryButton);
		
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		pack();
		setSize(1000, 600);
		setResizable(false);
		setVisible(true);
	}
	
	public void addButtons()
	{
		doQueryButton = new JButton("Do a Query");
		doQueryButton.setActionCommand(doQuery);
		doQueryButton.addActionListener(this);
	}
	
	public void actionPerformed(ActionEvent e)
	{
		if (e.getActionCommand().equals(doQuery))
		{
			dataBaseOperationsImpl = new DataBaseOperationsImpl();
			dataBaseOperationsImpl.doQuery();
		}
	}
	
}
 

Bleiglanz

Gesperrter Benutzer
diese Helper sind so schlecht, lern lieber die Grundlagen von JDBC und schreib den Code ohne solche Hilfsklassen!
 

megachucky

Bekanntes Mitglied
welche hilfsklassen meinst du?

du meinst connection aufbauen und abfragen machen in einer klasse?

würde trotzdem gerne wissen was hier falsch ist. thx
 

thE_29

Top Contributor
Im falschen Forum isses, soviel is klar :)

Und weg damit :D

desweitern würde ich in den Konstruktor
Code:
public DataBaseConnection()
   {
      connectToDataBase() ;
   }
was reinschreiben ;)

so hab keine Zeit mehr, musst halt schauen was falsch ist :)
 

megachucky

Bekanntes Mitglied
hm, dacht dass anfängerfragen immer hier rein kommen :)

in den konstruktor soll eigentlich hier nix, die methode wird ja woanders aufgerufen.

also ich habs mittlerweile etwas weiter geschafft: ich muss natürlich in der methode doQuery noch zuerst die methode
connectToDataBase aufrufen.
wenn ich dann beiden methoden in der klasse DataBaseConnection habe,läuft nun auch alles und die abfrage klappt.

wenn ich es allerdings eben in 2 klassen probiert, also eine für die connection und eine für das select, dann klappt es nicht.

kann mir bitte jemand sagen wie ich das mache?

ich muss ja irgendwie das stmt und conn in die andere klasse "bringen", damit ich dort dann

Code:
dataBaseConnection = new DataBaseConnection();
dataBaseConnection.connectToDataBase()

innerhalb der doQuery methode aufrufen kann ?!?
 

thE_29

Top Contributor
Hast du der 2ten Klasse die Verbindung irgendwo mitübergeben?

Soweit ich sehe net, oder?

dataBaseConnection = new DataBaseConnection();
conn = dataBaseConnection.getConn();

da fehlt wieder verbinden!

Oder du übergibst sie mit!
 

allievo

Mitglied
thE_29 hat gesagt.:
Im falschen Forum isses, soviel is klar :)

Und weg damit :D

desweitern würde ich in den Konstruktor
Code:
public DataBaseConnection()
   {
      connectToDataBase() ;
   }
was reinschreiben ;)

so hab keine Zeit mehr, musst halt schauen was falsch ist :)

Habe in den Buchbeispielen auch schon diese Vorgehensweise gesehen, aber warum ist das sinnvoll?

Gruß
Allievo
 

allievo

Mitglied
Hi,

mich verwundert es, dass noch keiner auf meine Frage geantwortet hat. Ist sie zu trivial oder hat sich obige Vorgehensweise einfach nur eingebürgert? Für Antworten schon mal vielen dank!

bye
A. :lol:
 

thE_29

Top Contributor
Für was gibts halt nen Konstruktor wenn du drin nix tust!

Wäre ja sinnlos wenn du jedes mal sagen musst, verbinde dich jetzt erst wieder, außer es ist eine statische Verbindung die du net immer verbunden haben willst oder halt eine normale Verbindung die du net immer verbunden haben willst!
 

bellmann29

Aktives Mitglied
Hallo Chucky,

Natürlich gehören Deine Fragen hier hin. Wo denn sonst?

Also ich habe noch mal Deinen Code angesehen.

Du erzeugst in der Klasse "DatabaseOperationImpl" zwar ein neues Objekt vom Typ "DatabaseConnection" in der Methode "doQuery()", aber Du stellst die Verbindung nicht her. Es fehlt einfach noch die Zeile "conn = databaseConnection.connectToDatabase()".
Also:

Code:
...
DatabaseConnection databaseConnection = new DatabaseConnection(); // ok.
databaseConnection.connectToDatabase(); // verbinden
conn = databaseConnection.getConn(); // jetzt bekommst Du sie auch
...
Vorher hast Du "null" zurückbekommen, da die Connection von Dir mit "null" initialisiert wurde.

Code:
...
private Connection conn = null; // in DatabaseConnection
...

Übrigens hast Du in einem späteren Beitrag die Antwort schon selbst richtig hingeschrieben. Nur nicht in Deiner App benutzt. :D

Noch ein Tipp:

Wenn es ein Interface "DatabaseOperations" gibt und Du eine Implementierung schreibst. Ist es nicht schön, wenn es nicht benutzt wird.
siehe SQLWindow:
Code:
...
private DataBaseOperationsImpl dataBaseOperationsImpl; 
//besser wäre
private DataBaseOperations dataBaseOperations; // Dein Implementierung paßt da ja

Bis dann.
 

bellmann29

Aktives Mitglied
Hey man, Du hattest es ja schon allein gefunden.

Aber trotzdem noch Probleme?

Was soll die Zeile
Code:
...
sqlWindow = new SQLWindow("Window");
...
die gehört da nicht rein.

und dann noch mal "doQuery()"
Code:
stmt = conn.createStatement();
rset = stmt.executeQuery(doQuery);
while(rset.next()){
  String derKaffeeName = rset.getString("COF_NAME"); //Ergebnis holen
  System.out.println("Der Name des Kaffee lautet: " + derKaffeeName); //Ergebnis ausgeben
}


// und nicht vergessen Connection zu schließen:
con.close();

Und wo ist eigentlich die main() ?
 

KSG9|sebastian

Top Contributor
Also, nochmal zum Beitrag von bleiglanz...

an deiner stelle würd ich mich ne Klasse machen, die ne Verbindung zur DB aufbaut und sqls ausführt. Meiner Meinung nach ist es wenig sinnvoll die Datenbankconnection auf 3 Klassen zu verteilen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
F MySQL JDBC Problem Datenbankprogrammierung 5
Q MySQL JDBC-Treiber Problem Datenbankprogrammierung 2
R Connection Problem für eine externe DB mit Java (JDBC) Datenbankprogrammierung 9
F MySQL - Connection JDBC-Driver Problem Datenbankprogrammierung 4
O JDBC:ODBC Problem Remedy ARS Datenbankprogrammierung 8
W Problem bei Insert mit JDBC auf MS-SQL-Server 2005 Datenbankprogrammierung 7
S Problem mit JDBC und Applet Datenbankprogrammierung 3
S Oracle JDBC Treiber Problem Datenbankprogrammierung 4
alexpetri Problem mit jdbc MS Access / nach 670 inserts ist schluss. Datenbankprogrammierung 4
J Problem mit dem JDBC Treiber Datenbankprogrammierung 5
M Problem mit Hibernate und JDBC Datenbankprogrammierung 2
E Problem beim laden des JDBC Driver bzw der Database Datenbankprogrammierung 8
B Hilfe! Problem bei Verbindung über JDBC/ODBC Datenbankprogrammierung 4
S jdbc treiber problem Datenbankprogrammierung 12
V JDBC Problem Datenbankprogrammierung 4
T JDBC Connection refused Problem Datenbankprogrammierung 6
F Problem mit Oracle-JDBC-Treiber Datenbankprogrammierung 5
2 problem mit jdbc treiber Datenbankprogrammierung 4
S Problem mit eclipse und jdbc Datenbankprogrammierung 2
N Problem mit dem Datenbankzugriff über ucanaccess Datenbankprogrammierung 15
C Problem mit Apache Poi Datenbankprogrammierung 6
N HSQLDB Problem mit Eclipselink in runnable Jar Datenbankprogrammierung 10
P GroupLayout-Problem Datenbankprogrammierung 12
F XAMPP max connections problem Datenbankprogrammierung 6
C MySQL Problem in phpMyAdmin Oberfläche Datenbankprogrammierung 5
C Problem with INSERT.............ON DUPLICATE KEY Datenbankprogrammierung 3
C Problem with insertion in database. Datenbankprogrammierung 7
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
A kleines Problem Datenbankprogrammierung 6
T Problem mit Datenbankverbindung Datenbankprogrammierung 22
V Derby/JavaDB updateRow Problem Datenbankprogrammierung 0
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
Nuiton EmbeddedDriver Problem Datenbankprogrammierung 6
A MongoDB Passwort Problem Datenbankprogrammierung 0
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
Anfänger2011 Datenbankstruktur/aufbau (theoretisches Problem) Datenbankprogrammierung 5
M Derby/JavaDB Drop Database problem Datenbankprogrammierung 3
M Derby/JavaDB NOT LIKE problem Datenbankprogrammierung 19
N HSQLDB Problem mit EntityManager Datenbankprogrammierung 7
B MySQL JPAContainer Problem Datenbankprogrammierung 4
K Eclipse Apache Derby Treiber Problem Datenbankprogrammierung 4
C Problem oder Denkfehler mit H2-Database Datenbankprogrammierung 3
E Wie kann man das Problem mit der BLOB-Spalte lösen? Datenbankprogrammierung 1
M Problem mit jcouchdb und CouchDB - UTF8 kein gültiger Zeichentyp Datenbankprogrammierung 4
T MySQL Problem mit Datenbankanbindung Datenbankprogrammierung 4
M INSERT-Problem = integrity constraint violation: foreign key no parent Datenbankprogrammierung 5
P SQL Query Problem Datenbankprogrammierung 14
A MySQL Problem bei Tabelle ausgeben Datenbankprogrammierung 3
B SQLite Problem bei Planung der Datenbank [Jeopardy] Datenbankprogrammierung 3
A Problem mit dem Import und Export von Bildern Datenbankprogrammierung 4
P Oracle Problem mit Umlauten Datenbankprogrammierung 9
A Problem mit Create-Statement Datenbankprogrammierung 9
D Problem mit COLUMN_IDENTIFIERS Datenbankprogrammierung 8
Bluedaishi MySQL Abfrage Problem :-) Datenbankprogrammierung 21
M Problem mit mehreren Datasourcen Datenbankprogrammierung 3
R Resultset.last() Problem Datenbankprogrammierung 12
M Problem GroupBy Datenbankprogrammierung 3
S CURRENT_DATE problem Datenbankprogrammierung 2
M Problem mt JPA Id-Generators Datenbankprogrammierung 18
Gossi Oracle Problem mit group by... Datenbankprogrammierung 22
M MySQL SQL Abfrage Problem Datenbankprogrammierung 6
R MS-SQL Express Login-Problem Datenbankprogrammierung 8
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
N HSQLDB Problem beim Treiberladen im Jar Datenbankprogrammierung 6
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
M Problem mit HQL Syntax Datenbankprogrammierung 5
K Db4o Delete Problem Datenbankprogrammierung 11
Mike90 Deadlock/Lock Problem Datenbankprogrammierung 4
T Access 32bit on Win7 64Bit ODBC Problem Datenbankprogrammierung 1
C unverständliches DB Problem (Es ist kein temporärer Systemtabellenbereich mit einer ausreichenden..) Datenbankprogrammierung 5
S ODBC Treiber Problem/oder unvermögen Datenbankprogrammierung 18
J Problem bei Boolean in PreparedStatement Datenbankprogrammierung 5
C MySQL Problem mit UPDATE Abfrage Datenbankprogrammierung 13
C Problem mit SQL-Abfrage Datenbankprogrammierung 5
K Problem mit Datenbankverbindung via Eclipse Datenbankprogrammierung 2
A Problem mit Eintragen von Daten in eine Datenbank mittels DAO Datenbankprogrammierung 4
S Oracle Problem mit PreparedStatement.setString(1,"str") Datenbankprogrammierung 10
B MySQL Problem mit Datenbankanbindung an MySQL Datenbankprogrammierung 2
N Problem bei Erstellung eines Index Datenbankprogrammierung 12
C Hibernate Property-Problem Datenbankprogrammierung 5
J MyBatis - Update Problem Datenbankprogrammierung 4
S JPA: Problem mit Update von Daten Datenbankprogrammierung 7
c_sidi90 Hibernate Problem Table doesnt excist Datenbankprogrammierung 8
M Problem mit JPA - OneToMany-Relation Datenbankprogrammierung 3
I Hibernate: Composite Foreign Key Problem Datenbankprogrammierung 14
S JPA OptimisticLocking Problem Datenbankprogrammierung 11
I Derby/JavaDB Problem mit Befüllung von Tabelle Datenbankprogrammierung 7
JavaKaffee Derby/JavaDB Quartz-WebAnwendung - Connection/Treiber Problem Datenbankprogrammierung 47
I Problem mit ResultSet Datenbankprogrammierung 2
L Excel in MySQL importieren Problem Datenbankprogrammierung 5
S Problem beim Anlegen einer Tabelle Datenbankprogrammierung 5
R MS Access mit Java Problem mit Update Statment Datenbankprogrammierung 13
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
T Problem beim schreiben von daten Datenbankprogrammierung 4
M MySQL getConnection - Verbindung Problem Datenbankprogrammierung 2
K Hibernate + MySQL Problem... Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben