Datenbankzugriff via JDBC

Status
Nicht offen für weitere Antworten.

Mark110

Bekanntes Mitglied
Hallo zusammen,

ihr konntet mir bereits bei vielen Fragen helfen! Deshalb hab ich mich gleich mal registriert.
Ich möchte mich mit Java auf eine Oracle Datenbank verbinden. Grundsätzlich funktioniert das schonmal.
Leider fehlen mir ein paar Basics, wie man sowas mit OOP macht.
Derzeit habe ich es so gemacht, dass ich eine Klasse erstellt habe "Datenbank", die folgende Methoden hat:

datenAuslesen(String query);
ausgabe();

Die erste Methode nutze ich um der Datenbank den Select String zu übermitteln.
Die Datensätze speichere ich in einer Liste (LinkedList).
Die zweite Methode gibt diese Liste aus.


Hier sind wir nun also bei der ersten Frage: Wie baue ich mir eine solche Datenbankklasse sinvoll auf?

Hintergrund ist, dass ich eine Software teste und diese mit Daten aus einer Datenbank füttere.
D.h. ich habe eine Java Klasse, die verschiedene Formularfelder mit Daten aus einer Datenbank füttert und dann schaut ob es funktioniert.

Mein jetzioges Problem (neben dem prinzipiellen aufbau) ist die übergabe der Liste.
Ich poste euch hierfür mal meinen Quelltext

Datenbank.java:



Code:
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 
import java.util.*;

public class Datenbank { 
    
   String url; 
   String user; 
   String pass; 
   Statement befehl; 
   Connection verbindung; 
   ResultSet datenmenge; 
   String username; 
    
   public Datenbank() 
   { 
      url = "jdbc:oracle:thin:@172.******:1521:****"; 
      user = "***"; 
      pass = "***"; 
       
      try 
      { 
         Class.forName("oracle.jdbc.driver.OracleDriver"); 
         } 
      catch (Exception e) 
      { 
         System.err.println("Fehler beim Laden des Treibers."); 
       
         return; 
      } 
       
       
       
      try 
      { 
         verbindung = DriverManager.getConnection 
                  (url,user,pass); 
         befehl = verbindung.createStatement(); 
      } 
      catch (Exception e) 
      { 
         System.err.println("Verbindung zu "+ url +" fehlgeschlagen"); 
         return;
      } 
      
            
   } 
   
    public java.util.LinkedList datenauslesen(String query){
	   LinkedList liste = new LinkedList();
	   try 
	      { 
		   	 
	         datenmenge = befehl.executeQuery 
	         (query); 
	          
	         while (datenmenge.next()) 
	         { 
	         username = datenmenge.getString("username"); 
	         liste.add(username);
	         return liste;
	         	         
	         }	         
	         verbindung.close(); 
	         
	      } 
	      catch (Exception e) 
	      { 
	         System.err.println("Fehler beim Laden des Datensatzes"); 
	      }  
	      return liste;
	      
	      
   }
    
    LinkedList ausgabe () {
    	LinkedList liste = new LinkedList();
    	liste.add("dd");
    	liste.add("rr /n");
    	//System.out.println(liste);
    	return liste;
    }

   public static void main (String[] args) 
   { 
	 // java.util.LinkedList test;
      //Datenbank eins = new Datenbank();
      //eins.datenauslesen("SELECT id,username FROM test");
      //test = eins.ausgabe();
      //test.add("tkkg");
      //System.out.println("Alt: \t \t" + test);
      //System.out.println("Removed: \t" + test.remove(2));
      //System.out.println("Neu: \t \t" + test);
   } 
}

Die Klasse liegt im sleben Paket (bzw slebe Ebene oder wie man dazu sagt, wie meine classe ExtenTest.java).

Leider erhalte ich hier keine Ausgabe:


Code:
public class Extendtest extends Datenbank {

	
	public static void main(String[] args) {
		
		//java.util.LinkedList test;
				
		//Datenbank drei = new Datenbank ();
		//test = drei.datenauslesen("SELECT id,username FROM test");
		//System.out.println(test);
		//System.out.println(test.size());

		java.util.LinkedList test;
	    Datenbank zwei = new Datenbank();
	    test = zwei.datenauslesen("SELECT id,username FROM test");
	    System.out.print(test);
	}

}

Nutze ich die Datenbank.java zum ausgeben der Liste funktioniert es. Nur mit der Extendtest.java funktioniert es nicht ..

Vielen dank für eure Hilfe!


EDIT: KEine Ausgabe heißt: die Konsole bleibt weiss. Keine Fehlermeldung.

Ich nutze Eclipse.
 

ARadauer

Top Contributor
ich arbeite immer mit DAOs (Data Access Objects)
Du hast bestimmte Fachobjekte, zb Benuzter, Aufgabe, Termin.
und ich bau mir dann für jedes Fachobjekt ein Dao (BenutzerDao,...)
Diese Objekte bieten mir Methoden zum Erstellen, Lesen, Updaten, Löschen (CRUD). zb

public void createBenuzter(Benutzer b);
oder
public ArrayList<Benutzer> readAllBenuzter();

Wie diese Daos dann auf die Daten zugreifen ist dem Fachobjekt dann selber egal. JDBC, DB, Datei.. is dem Benuzter oder Aufgabe egal.

Wie die Daos Verbindung herstellen, das mach ich unterchiedlich, hab mir mal einen kleien ConnectionPool geschrieben. Ein Dao fordert vom Pool eine Connection an und gibt sie ihm wieder zurück. Der Pool gibt offenen Verbindungen zurück, bzw öffnet Verbindungen wenn er keine offene hat.

Den hab ich ca 10 Monaten mal was gepostet....
 

Mark110

Bekanntes Mitglied
Kann sich das nochmal jemand anschauen. ich glaube ich suche etwas anderes als DAO?

Möchte doch einfach nur ein paar daten auslesen und diese an eine rbestimmten stelle einfügen.
 

ARadauer

Top Contributor
der Fehler hab ich im selben Thread unten bereinigt.

Naja was willst du jetzt? Einfach nur ein Paar Daten auslesen? Das machst du bereits!
Oder das OOP mäßig aufbauen?

Deine Datenbank macht zu viel. Was hat da username darin zu suchen? Wenn sich dein zu ladendes Objekt ändert musst du die ganze DB Klasse ändern.

Ich finde meinen Ansatz nicht so schlecht, aber wenn dir das überhaupt nicht zusagt, kannst du dir ja mal hibernate ansehen.
 
M

maki

Gast
DAO ist genau richtig.

Was du da machst TomBola ist n icht so gut, voller Fehler (nicht geschlossene Ressourcen, falsches Exceptionhandling, etc. pp.) und früher oder später wirst du sowieso zum DAO Muster greifen.

Kannst dich ja aml reinlesen: http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html

Ansonsten kannst du dir noch fertige Frameworks ansehen, welche allesamt das DAO Muster verwenden, wie zB Hibernate, iBatis, etc. pp.
 

Mark110

Bekanntes Mitglied
die datenbank wird sich nicht ändern.
ich bin anfänger... und glaube das das thema dao zu viel ist. kann man das nicht über klassen und methoden ähnlich gut strukturieren?
 
M

maki

Gast
DAOs sind aus Klassen und Methoden gemacht...

Lerne mehr über JDBC (und die Ressourcenfreigabe!), Exceptionhandling und warum man lieber Interfaces anstatt Implmentierungen bei Deklarationen angeben sollte.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Datenbankzugriff - Leere Zeile einfügen Java Basics - Anfänger-Themen 2
M Datenbankzugriff Java Basics - Anfänger-Themen 6
M Java-Projekt in JAR umwandeln und Datenbankzugriff Java Basics - Anfänger-Themen 10
A Datenbankzugriff ohne Eclipse Java Basics - Anfänger-Themen 15
G Jar Datei inkl. Datenbankzugriff Java Basics - Anfänger-Themen 9
G Datenbankzugriff Java Basics - Anfänger-Themen 5
M Verständnisfrage zu 'localhost' beim datenbankzugriff Java Basics - Anfänger-Themen 5
S datenbankzugriff werte addieren Java Basics - Anfänger-Themen 9
M SQL-Anweisung bei Datenbankzugriff Java Basics - Anfänger-Themen 7
D Datenbankzugriff mit einem Applet Java Basics - Anfänger-Themen 14
P Datenbankzugriff Java Basics - Anfänger-Themen 21
A JDBC EmbeddedDriver Java Basics - Anfänger-Themen 1
C No suitable driver found for jdbc:odbc:mysql Java Basics - Anfänger-Themen 8
D JDBC wie ermittle ich den Driver? Java Basics - Anfänger-Themen 26
A Java - JDBC SQL Java Basics - Anfänger-Themen 2
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
B MySQL (jdbc) -> connection liefert NULL Java Basics - Anfänger-Themen 3
F Warum erhalte ich diese Fehler bei der Einbindung von SQLite JDBC in Eclipse? Java Basics - Anfänger-Themen 1
Vince42 Java 8 JDBC / OLE DB Java Basics - Anfänger-Themen 15
O JDBC Ungültiger Spaltenindex Java Basics - Anfänger-Themen 19
K JDBC - Wie ist Fehlermeldung zu interpretieren Java Basics - Anfänger-Themen 3
B Java Datenbankverbindungsfähigkeit - JDBC Java Basics - Anfänger-Themen 1
D Was genau ist JDBC? Java Basics - Anfänger-Themen 2
P Classpath jdbc-Treiber kann nach export in jar-File nicht mehr geladen werden Java Basics - Anfänger-Themen 2
M JDBC SQL Problem Java Basics - Anfänger-Themen 5
K org.h2.jdbc.JdbcSQLException: Keine Daten verfügbar Java Basics - Anfänger-Themen 9
J Oracle JDBC Driver funktioniert nur in einer Klasse Java Basics - Anfänger-Themen 2
eLogic JDBC: Relative Pfadangabe in JAR Java Basics - Anfänger-Themen 14
F Erfassung von PCs in eine SQLite-Datenbank über JDBC Java Basics - Anfänger-Themen 9
S JDBC MySQL Connector - Element mit ' eintragen? Java Basics - Anfänger-Themen 4
D JDBC Datenbank fail?! Java Basics - Anfänger-Themen 20
R JDBC leeres ResultSet Problem Java Basics - Anfänger-Themen 2
J Java JDBC MySQL Query Java Basics - Anfänger-Themen 6
X JDBC installieren Java Basics - Anfänger-Themen 2
F JDBC - ClassNotFoundException Java Basics - Anfänger-Themen 3
J jdbc driver on linux ? Java Basics - Anfänger-Themen 11
lenniii DB Basics (JDBC-Treiber) Java Basics - Anfänger-Themen 16
P Servlets und JDBC Java Basics - Anfänger-Themen 2
B JDBC DB2 Connection Java Basics - Anfänger-Themen 1
C OOP JDBC: Ausgabe ResultSet nach Select Java Basics - Anfänger-Themen 3
P JDBC für anfänger Java Basics - Anfänger-Themen 16
D Probleme mit jdbc Java Basics - Anfänger-Themen 9
T JDBC Problemchen Java Basics - Anfänger-Themen 2
B JDBC Treiber lokal installieren ? Java Basics - Anfänger-Themen 2
B JDBC: Bereits in der DB vorhandene Abfrage ausführen Java Basics - Anfänger-Themen 7
G Oracle SQL JDBC in Eclipse laden Java Basics - Anfänger-Themen 2
G Maven Dependency für Oracle JDBC-Driver korrekt festlegen Java Basics - Anfänger-Themen 4
G JDBC - Classpath - Ich werd wahnsinnig! Java Basics - Anfänger-Themen 18
J Fehler bei MySql Anbindung mit JDBC Java Basics - Anfänger-Themen 4
G welche Java-Technologie für JDBC geeignet Java Basics - Anfänger-Themen 6
N JDBC Problem Java Basics - Anfänger-Themen 5
S JDBC und NullpointerException Java Basics - Anfänger-Themen 5
S JDBC Verbindungen Java Basics - Anfänger-Themen 2
M JDBC Treiber LGPL Java Basics - Anfänger-Themen 11
D JDBC Treiber unter dem Java Application Server Java Basics - Anfänger-Themen 6
J java und jdbc mit access Java Basics - Anfänger-Themen 3
J JDBC Crash Kurs Java Basics - Anfänger-Themen 3
D Einige Fragen zu Java Java2D JDBC usw. XD Java Basics - Anfänger-Themen 13
D Kleines Problem mit JDBC Java Basics - Anfänger-Themen 2
T SWT-Tabelle aus JDBC füllen Java Basics - Anfänger-Themen 8
C jdbc Anfänger Tutorial gesucht Java Basics - Anfänger-Themen 19
H JDBC in den Klassenpfad eintragen Java Basics - Anfänger-Themen 4
J jdbc getTableName Java Basics - Anfänger-Themen 12
R JDBC Verbindung geht nicht Java Basics - Anfänger-Themen 4
S Problem mit JDBC und Transaktion Java Basics - Anfänger-Themen 12
G hilfe jsp/servlet,jdbc api running on tomcat server+webProxy Java Basics - Anfänger-Themen 8
K JDBC - Typ Connection in jeder Klasse neu öffnen? Java Basics - Anfänger-Themen 4
A JDBC modular Java Basics - Anfänger-Themen 2
megachucky nochmal JDBC. komme nicht weiter. Java Basics - Anfänger-Themen 4
megachucky JDBC-Grundlagen: Verständnisprobleme Java Basics - Anfänger-Themen 31

Ähnliche Java Themen

Neue Themen


Oben