Grundfragen zu Datenbanken

KingEldarion

Bekanntes Mitglied
Hi,

ich brauche in meinem Programm Datenbanken.
Ich habe noch nicht mit welchen gearbeitet, darum habe ich nun einige Fragen:

1. Es klingt so mit diesen Treibern etc. das man dafür extra etwas installieren muss.
Muss nur der Programmierer oder jeder der das Programm später benutzen will, diese Treiber oder sonstige Sachen installiert haben, ich möchte nämlich das der Nutzer nur Java installieren muss.

2. Wo gibt es ein gutes Tutorial?


EDIT:

Noch eine weitere Frage nebenbei:

Wie kann man ein BoxLayout zentrieren?
 
Zuletzt bearbeitet:

KingEldarion

Bekanntes Mitglied
Ich habe jetzt folgenden Quellcode:

Java:
import java.sql.*;
import org.h2.jdbcx.JdbcConnectionPool;
 
 public class Connection {
     public static void main(String... args) throws Exception {
         JdbcConnectionPool cp = JdbcConnectionPool.create(
             "jdbc:h2:~/test", "sa", "sa");
         for (String sql : args) {
             Connection conn = cp.getConnection();
             conn.createStatement().execute(sql);
             conn.close();
         }
         cp.dispose();
     }
 }

Aber der import von org.h2.jdbcx... ist mit der Begründung "the import cannot be resolved" fehlerhaft
 

KingEldarion

Bekanntes Mitglied
Wie füge ich diese .jar in den Classpath ein.

Bzw. ist der Classpath nicht der Ordner src(arbeite mit eclipse)

Sry wenn die Frage dämlich ist...

MfG KingEldarion

EDIT: Habs selber herausgefunden!
 
Zuletzt bearbeitet:

turtle

Top Contributor
Nein, der Classpath ist NICHT der src-Ordner, jedenfalls nicht nur. Über den Classpath sucht/findet Java class-Dateien (oder andere Resourcen), ähnlich wie die PATH-Variable vom OS genutzt wird, um ausführbare Programme zu finden. Vielleicht hilft das hier ja weiter.

Ich habe weitere Bibliotheken (Jar) immer in einem eigenen lib-Ordner parallel zu src. Damit kommen alle Libs, die mein Programm so benötigt zusammen und ich bin mir sicher, dass die richtigen Versionen genommen werden.

In Eclipse kannst Du den Build-Path anpassen und unter Libraries die Jars aussuchen, die Dein Programm benötigt (sollten im lib-Ordner enthalten sein). Darüber verwaltest Du also den Classpath zum Kompilieren Deines Programms.

Wenn Du Dein Programm startest, kannst Du den Classpath über die Run-Konfiguration auf der Tab-Seite Classpath einstellen. Manchmal, aber selten, werden weitere Jar benötigt, die Du nicht in Deinem Lib-Ordner hast (haben willst). Dann kannst Du darüber den Classpath für die Ausführung Deines Programm verwalten.

Wenn Du wirklich H2 als Datenbank nutzen möchtest, solltest Du also einen lib-Ordner (parallel zu src) anlegen und den JDBC-Treiber (h2-1.3.163.jar oder welche Version Du hast) da rein kopieren, den BuildPath anpassen und Dein Programm sollte starten.
 

KingEldarion

Bekanntes Mitglied
Gibts irgendwo im Internet ein vernünftiges Tutorial in Deutsch zu H2 wie man Daten abfragt und schreibt?!

Ich find nämlich garnichts

MfG KingEldarion
 

pro2

Bekanntes Mitglied
Google

Ich find außer dem auch nichts. Du wirst dich wohl mit was englischem zufrieden geben müssen, aber es ist eh der gleiche Quellcode, also sollte das doch nicht das Problem darstellen^^
 

KingEldarion

Bekanntes Mitglied
Kleine Frage undzwar, wie genau kann ich jetzt Eingaben in die Datenbank machen und wieder ausgeben?! Und vorallem wäre so jetzt Spielerdaten eine Datenbank?
Das Tut von H2 ist der größte s*****...

Java:
import javax.swing.*;

import org.h2.command.ddl.CreateTable;

import java.awt.*;
import java.sql.*;




public class Start extends JFrame
{
	Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
	
	
	
	  int top = (screenSize.height);
      int left = (screenSize.width);
      
      char exception;
      
      JLabel laden = new JLabel("Daten werden geladen, dies könnte einige Zeit dauern...");
      
      public Start()
      {
    	  setTitle("Lädt Crusade of Future!");
    	  setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    	  add(laden);
    	  
    	  
      }
      
      public static void main(String[]args)
      {
    	  Start frame = new Start();
    	  
    	  frame.setSize(1000, 500);
    	  frame.setResizable(false);
    	  frame.setVisible(true);
    	  
    	  Connection con = null;
    	  try{
    		  
    		  Class.forName("org.h2.Driver");
    	        Connection conn = DriverManager.
    	            getConnection("jdbc:h2:~/test", "sa", "");
    	       
    	        	CreateTable Spielerdaten;
    	        	
    	        conn.close();
    	        
    		  
    	  }catch(Exception e){
    		  Framestart startframeX = new Framestart();
    		  startframeX.error();
    	  }
    	  Framestart startframe = new Framestart();
    	  Start starter = new Start();
    	  frame.setVisible(false);
    	  
    	  startframe.menu();
      }
      
      
      
      
}
 

pro2

Bekanntes Mitglied
Da du noch nicht viel Ahnung von Datenbanken hattest, vermute ich mal, dass du auch kein Wissen über SQL hast.

SQL ? Wikipedia

Das ist jetzt aber auch keine Kunst. Alles was du brauchst kannst du dir schnell zusammen suchen und außerdem solltest du massig SQL Tutorials im Internet finden, auch auf Deutsch. Hier ist es übrigens für den meisten Inhalt egal, ob es dabei um MYSQL, H2 oder sonst irgendeine Datenbank geht, die SQL Befehle sind fast immer gleich.
 

KingEldarion

Bekanntes Mitglied
Das Problem ist dabei, dass ich überall solche Sachen finde:
Java:
CREATETABLE
etc. finde.

Aber in eclipse wird mir das immer als Fehler angestrichen und meine h2 Datenbank will zum Beispiel einen folgenden Befehl haben:
Java:
CreateTable Spielerdaten;

Wieso, ich versteh den Sinn dabei einfach nicht?!

Darum hätte ich gerne eine Erklärung...:autsch:???:L
 

KingEldarion

Bekanntes Mitglied
Also ich habe nun folgenden Quellcode in meiner start.java, in der ich alle erforderlichen Dateien für das Spiel laden möchte:
Java:
import javax.swing.*;

import org.h2.command.ddl.*;

import java.awt.*;
import java.sql.*;




public class Start extends JFrame
{
	 
      
      char exception;
      
      JLabel laden = new JLabel("Daten werden geladen, dies könnte einige Zeit dauern...");
      
      public Start()
      {
    	  setTitle("Lädt Crusade of Future!");
    	  setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    	  add(laden);
    	  
    	  
      }
      
      public static void main(String[]args)
      {
    	  Start frame = new Start();
    	  
    	  frame.setSize(1000, 500);
    	  frame.setResizable(false);
    	  frame.setVisible(true);
    	  
    	  Connection con = null;
    	  try{
    		  
    		  Class.forName("org.h2.Driver");
    	        Connection conn = DriverManager.
    	            getConnection("jdbc:h2:~/test", "sa", "");
    	       
    	        	CreateTable Spielerdaten;
    	        	
    	        	
    	        	
    	        conn.close();
    	        
    		  
    	  }catch(Exception e){
    		  Framestart startframeX = new Framestart();
    		  startframeX.error();
    	  }
    	  Framestart startframe = new Framestart();
    	  Start starter = new Start();
    	  frame.setVisible(false);
    	  
    	  startframe.menu();
      }
      
      
      
      
}

Das ist meine Start.java

Ich scheine damit eine Tabelle erzeugt zu haben, ob ich das wirklich habe, war auch eine Frage in einem vorherigen Post, nun weiß ich aber garnicht wie ich eine Tabelle füllen kann...
 
Zuletzt bearbeitet:

Final_Striker

Top Contributor
Bis jetzt hast du ja nur eine Verbindung zur Datenbank aufgebaut.

Was ist mit der Klasse
Code:
CreateTable Spielerdaten
?
 

EnHancEd[]

Aktives Mitglied
Eine Tabelle erzeugst du mit:

SQL:
CREATE TABLE "Tabellen_Name"
("Spalte 1" "Datentyp_für_Spalte_1",
"Spalte 2" "Datentyp_für_Spalte_2",
... )


Einfügen tust du deine Werte dann mit einem INSERT INTO Befehl.

--
 

EnHancEd[]

Aktives Mitglied
Du solltest erstmal die Grundlagen erlernen.. JDBC ist zwar mehr Arbeit am Anfang aber das solltest du schon beherrschen.. ich habe mit PostgreSQL angefangen als Datenbank.. ist Ansichtssache, die meisten nehmen MySQL.

--
 

HimBromBeere

Top Contributor
Um in einem Programm (egal in welcher Sprache geschrieben) an einer Datenbak rumzudoktorn, brauchst du erstmal Zugriff auf dieselbe. Diesen holst du dir über einen Datenbanktreiber (sowas wie jdbc.postgresql.org oder so ähnlich), den du in den ClassPath inkludierst. Nun musst du innerhalb deines Programmes eine Verbindung zur Datenbak aufbauen, in dem du sowas angibst wie Datenbank, Nutzername, Passwort. Antwortet der Datenbankserver mit einer Zugriff-erlaubt-Nachricht (sprich es kommen keine Fehler), kannst du nun anfangen, SQL-Befehle auf diese (und nur diese) Datenbak abzufeuern (aber es gibt auch DBMS die das Handeln von mehreren Datenbaken gleichzeitig unterstützen...).
Mehr brauchst du also gar nicht: Datenbank + Datenbanktreiber + Verbindungsparameter -->fertig

Du solltest erstmal die Grundlagen erlernen.. JDBC ist zwar mehr Arbeit am Anfang aber das solltest du schon beherrschen..
SQL nicht zu vergessen, aber das wurde ja bereits erwähnt.
ich habe mit PostgreSQL angefangen als Datenbank.. ist Ansichtssache, die meisten nehmen MySQL.
Ist ja Wahnsinn, endlich mal jemand. Ich hab schon immer gedacht, ich sei ein totaler Exentriker und irgendwie falsch gepolt.
 
Zuletzt bearbeitet:

KingEldarion

Bekanntes Mitglied
Also ich verstehe das so, man nimmt einen String, schreibt in diesen den SQL Befehl rein.

Erstellt ein neues Statement-objekt, diesem Statement-objekt gibt man nun den String in dem der SQL Befehl steht...

Dann führt man das statement in dem try-block aus.

Stimmt das soweit?
 
G

Gast2

Gast
Also ich verstehe das so, man nimmt einen String, schreibt in diesen den SQL Befehl rein.

Erstellt ein neues Statement-objekt, diesem Statement-objekt gibt man nun den String in dem der SQL Befehl steht...

Dann führt man das statement in dem try-block aus.

Stimmt das soweit?

Benutz doch einfach den TelepathicInputStream Tabelle 12.1
Java ist auch eine Insel – 12.3 Stream-Klassen und Reader/Writer
der kann daten über Telepathie an die DB senden ;)
 

EnHancEd[]

Aktives Mitglied
Also ich verstehe das so, man nimmt einen String, schreibt in diesen den SQL Befehl rein.

Erstellt ein neues Statement-objekt, diesem Statement-objekt gibt man nun den String in dem der SQL Befehl steht...

Dann führt man das statement in dem try-block aus.

Stimmt das soweit?

query nennt sich das i.d.R.

SQL an sich kannste schnell über MySQL page lernen meiner Erinnerung nach.
Wenn du das hast solltest du dich an die Basic s von JDBC machen.

Hybernate etc. kommt erst später.

Was wichtig ist zu erlernen, wie du Werte in Objekten "speicherst" bzw übergibst, diese in deiner Datenbank dann speicherst und Methoden schreibst wie du diese wieder aus der Datenbank gezielt rauskriegst.. Das nur so nebenbei.

Anbei der Link für SQL, mit dem man das gut erlernt und das auch noch auf DEUTSCH ist, ein Luxus:toll:

MySQL :: MySQL 5.1 Referenzhandbuch :: 13 SQL-Anweisungssyntax



Und zum Thema wie das aussehen sollte, in etwa so (Code-Ausschnitt):

Java:
List<City> cityList= new ArrayList<City>();
	   Connection conn= getConnection();
	   stmt= conn.createStatement();
       String query= "SELECT* FROM cities ORDER BY name";
	   ResultSet result= stmt.executeQuery(query);
	   
	   while(result.next()) {
          .
          .
          .   
        }
       return cityList;
      }

Aber bevor du das machst solltest du dich mit dem Thema COLLECTIONS befasst haben, eines der Wichtigsten in Java!


Gruß & viel Erfolg
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
O apache derby in eclipse für Datenbanken einbauen Datenbankprogrammierung 3
R Datenbanken erstellen Datenbankprogrammierung 3
I Hilfe zu Multidimensionalen Datenbanken Datenbankprogrammierung 1
D Java Datenbanken Datenbankprogrammierung 1
T Lagerprogramm mit Datenbanken Datenbankprogrammierung 21
K Verschiedene Datenbanken - Was sollte ich lernen? Datenbankprogrammierung 11
M SQLite Zwei Datenbanken synchronisieren Datenbankprogrammierung 8
M Feedback für neues Buch über "Java und Datenbanken" erwünscht Datenbankprogrammierung 8
F MySQL+ Netbeans: Datenbanken mit Automatisch generierten Entity Classes get und set Datenbankprogrammierung 2
M Hash in Bezug auf Datenbanken unklar Datenbankprogrammierung 3
M Datenbankschema in relationalen Datenbanken Datenbankprogrammierung 3
Ananaskirsche Verschlüsselung von Datenbanken Datenbankprogrammierung 1
T Datenbanken-PDF Datenbankprogrammierung 15
Y Derby/JavaDB Benutzung von eingebetteten Datenbanken Datenbankprogrammierung 4
G Datenbanken in Java Datenbankprogrammierung 9
K Zwei Datenbanken miteinander auf Unterschiede vergleichen Datenbankprogrammierung 2
T 2 Tabellen aus 2 Datenbanken miteinander vergleichen Datenbankprogrammierung 6
B Datenbanken schützen vor Zugriff Datenbankprogrammierung 3
M Beziehungsfrage Datenbanken Datenbankprogrammierung 5
L Große Datenbanken - Designproblem Datenbankprogrammierung 3
E Zwischen Datenbanken wechseln Datenbankprogrammierung 13
L Synchronisieren von 2 Datenbanken Datenbankprogrammierung 2
T a x b x c x....n Matrizen in Datenbanken Datenbankprogrammierung 5
P DatenBanken mit Netbeans erstellen Datenbankprogrammierung 17
H Rechnen in Datenbanken - JDBC Mittel der Wahl? Datenbankprogrammierung 32
J Unterstützung für verschiedene Datenbanken Datenbankprogrammierung 2
T MySQL Auflistung aller Datenbanken??? Datenbankprogrammierung 9
J In viele verschiedene Datenbanken einfügen Datenbankprogrammierung 3
C MySQL Hibernate mit 2 Datenbanken Datenbankprogrammierung 12
V Hibernate mit 2 Datenbanken Datenbankprogrammierung 3
W MySQL Datenbanken auslesen Datenbankprogrammierung 3
M prinzipielle Frage zu Datenbanken und jars ... Datenbankprogrammierung 2
R PreparedStatement mit verschiedenen Datenbanken Datenbankprogrammierung 2
brainray Bei MySQL alle Datenbanken eines Servers abfragen Datenbankprogrammierung 3
R 1 Programm, 2 Datenbanken Datenbankprogrammierung 15
S Standard für Datenbanken Datenbankprogrammierung 3
R Datenbanken, Tabellen normalisieren. Datenbankprogrammierung 1
G Datenbanken abgleichen Datenbankprogrammierung 4
P Insert into mit zwei Datenbanken Datenbankprogrammierung 3
G Effektive Methode zum durchsuchen von SQL-Datenbanken Datenbankprogrammierung 7
M Datenbanken synchronisieren Datenbankprogrammierung 2
P Datenbanken auswahl, anforderungen Datenbankprogrammierung 29
K Daten in Datenbanken einfügen Datenbankprogrammierung 6
G H2: Erstellen von Datenbanken verhindern Datenbankprogrammierung 2
Y Datenbanken Datenbankprogrammierung 6
M Maximale Kapazität von Datenbanken Datenbankprogrammierung 2
S Objektorientierte Datenbanken Datenbankprogrammierung 4
F Zwischen Datenbanken wählen auf SQL-Server Datenbankprogrammierung 4
G Umlaut-Problem mit Firebird Datenbanken Datenbankprogrammierung 8
I Datenbanken mit MySQL einrichten Datenbankprogrammierung 11
G Step-by-Step Anleitung für Datenbanken Datenbankprogrammierung 3
N Abfrage über zwei Datenbanken Datenbankprogrammierung 9
M Treiber für mysql Datenbanken Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben