DB-Anbindung

pepe

Mitglied
gute Morgen allerseits,

ich habe ein Problem.. ich bin grade an einem Programm mit dem ich Mitarbeiterverwaltung, lagerverwaltung und Bestellverwaltung usw machen kann. Nur funktionieren meine Buttons einfach nicht, schätze da ist irgendein Problem mit der DBAnbindung hier des Quelltext.. für mehr Informationen einfach Fragen

[JAVA=42]
package fenster;

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

import fenster.Bestellung;

/**
*/
/**
*/
public class DBAnbindung {

// Verbindungsvariablen
Connection dbVerbindung = null;
Statement sqlAnweisung = null;
String sqlString1 = "SELECT * FROM Bestellungen;";
String sqlString2;
String sqlString3 = "SELECT * FROM Mitarbeiter";
String sqlString4;
String sqlString5 = "SELECT * FROM Kunde;";
String sqlString6;
String sqlString7;

ResultSet ergebnis = null;
String dateiname;
String datenbank;
/**
*/
/**
*/
Bestellung aktuelleBestellung;
Mitarbeiter aktuellerMitarbeiter;
Kunde aktuellerKunde;


// Konstriktoren
public DBAnbindung() {
// default
}

public DBAnbindung(Bestellung pBestellung) {
aktuelleBestellung = pBestellung;
}

public DBAnbindung(Mitarbeiter pMitarbeiter) {
aktuellerMitarbeiter = pMitarbeiter;
}

public DBAnbindung(Kunde paktuellerKunde) {
aktuellerKunde = paktuellerKunde;
}



// Methoden

public void oeffneDB() {
// Treiber laden
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch (ClassNotFoundException e) {
System.err.println("Kein Treiber gefunden ...");
return;
}



// Verbindung herstellen
try {
// mit expliziter Pfadangabe
dateiname = "D:/My Workspace/BeMiLa/Bestellungen.mdb";
datenbank = "jdbc:eek:dbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + dateiname;
// vom TreiberManager die Verbindung verlangen
dbVerbindung = DriverManager.getConnection(datenbank,"","");
System.out.println("DB-Verbindung erfolgreich hergestellt ...");
}
catch (Exception e2) {
System.out.println("Fehler beim Verbindungsaufbau! Keine Verbindung!");
e2.printStackTrace();
}
}


public ResultSet abfrageSenden() {
try {
sqlAnweisung = dbVerbindung.createStatement();
ergebnis = sqlAnweisung.executeQuery(sqlString1);
ergebnis = sqlAnweisung.executeQuery(sqlString3);
ergebnis = sqlAnweisung.executeQuery(sqlString5);
// NEU hier alles raus und in das Hauptfenser !!!
}
catch (SQLException e) {
System.out.println("Fehler beim DB-Zugriff! " + e);
System.exit(0);
}
return ergebnis;
}

public void aenderungSenden(Bestellung aktuelleBestellung) {
try {
sqlString2 = "INSERT INTO Bestellungen VALUES (" + aktuelleBestellung.getBestellnummer() + ", '"
+ aktuelleBestellung.getKundennummer() + "', " +
aktuelleBestellung.getMitarbeitername()
+ ", " + aktuelleBestellung.getArtikelnummer() + ", " +
aktuelleBestellung.getMenge()+ ");";
sqlAnweisung = dbVerbindung.createStatement();
sqlAnweisung.executeUpdate(sqlString2);
}
catch(SQLException err) {
System.err.println(err);

}
}

public void aenderungSenden(Mitarbeiter aktuellerMitarbeiter) {
try {
sqlString4 = "INSERT INTO Mitarbeiter VALUES ('" + aktuellerMitarbeiter.getName()+
"', '" + aktuellerMitarbeiter.getVorname()+ "', '"
+ aktuellerMitarbeiter.getAbteilung()+ "', '" + aktuellerMitarbeiter.getOrt()+
"', '" + aktuellerMitarbeiter.getPlz()+ "', '" + aktuellerMitarbeiter.getStrasse()+ "', '" +
aktuellerMitarbeiter.getMitarbeiternummer()+ "');";
System.out.println(sqlString2);
sqlAnweisung = dbVerbindung.createStatement();
sqlAnweisung.executeUpdate(sqlString4);
}
catch(SQLException err) {
System.err.println(err);

}
}

public void aenderungSenden(Kunde aktuellerKunde) {
try {
sqlString6 = "INSERT INTO Kunde VALUES ('" + aktuellerKunde.getKundennummer()+ "', '" +
aktuellerKunde.getName()+ "', '" +aktuellerKunde.getVorname()+ "', '" + aktuellerKunde.getStrasse()+ "', '" +
aktuellerKunde.getPlz()+ "', '" +aktuellerKunde.getOrt() + "');";
sqlAnweisung = dbVerbindung.createStatement();
sqlAnweisung.executeUpdate(sqlString6);
}
catch(SQLException err) {
System.err.println(err);

}
}


public void schliesseDB()
{
try
{
sqlAnweisung.close();
System.out.println("sqlAnweisung-Objekt vernichtet");
dbVerbindung.close();
System.out.println("DB-Verbindung geschlossen !");
}
catch (SQLException err) {
System.err.println(err);
}
}



}
[/code]
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
du musst dringend über deine Art zu fragen/ Probleme zu erklären/ Code zu posten, nachdenken,
von Rapidshare wird das kaum einer laden, man kann Programme auch auf 50 Zeilen kürzen, alles was nicht Button ist fliegt aus der GUI raus,
obige Klasse ließe sich auch mit ein paar investierten Minuten in
Java:
class DBAnbindung {
    private Connection dbVerbindung;
    public void oeffneDB() throws Exception {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String dateiname = "D:/My Workspace/BeMiLa/Bestellungen.mdb";
        String datenbank = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + dateiname;
        dbVerbindung = DriverManager.getConnection(datenbank, "", "");
        System.out.println("DB-Verbindung erfolgreich hergestellt ...");
    }
    public ResultSet abfrageSenden() throws Exception {
        sqlAnweisung = dbVerbindung.createStatement();
        ergebnis = sqlAnweisung.executeQuery("dummy-Query");
        return ergebnis;
    }
    public void schliesseDB() throws Exception {
        sqlAnweisung.close();
        System.out.println("sqlAnweisung-Objekt vernichtet");
        dbVerbindung.close();
        System.out.println("DB-Verbindung geschlossen !");
    }
}
kürzen, wahrscheinlich hat es nichtmal was mit der DB zu tun, eine Dummy-Klasse, die einen String temporär speichert, wäre als Test genug,
die Buttons erstellen bestimmt jeweils ein neues Objekt statt das alte weiterzuverwenden oder ähnlich allgemeine Probleme
 

pepe

Mitglied
Sorry Java ist einfach nciht mein Ding und nun soll ich dieses Projekt ja mit 2 Mitschülern machen. Die zwei haben aber kaum Zeit bzw Lust da was zu machen deswegen hab ich beschlossen die Sache selbst mal in die Hand zu nehmen da es um meine Note geht ^^-.-
Und mit dem letzten Quelltext kann ich kaum was anfangen :(
So kompliziert kann doch dieses Programm nicht sein. Also einfach nur Bestellungen Anlegen, Mitarbeiter anlegen und Artikel anlegen und ggf löschen, ändern.
und ncoh eine Frage: wenn ich beim Bestellung erfassen eine Bestellnummer Automatisch vergeben will, wie mach ich das am besten? sollte quasi einfach bei 1000 anfangen und dann bei jeder neuen Bestellung 1 dazuzählen und in die Datenbank übertragen. Und das gleiche mit der Kundennummer, sodass ich für 2 kunden nicht mal zufällig die gleiche Nummer habe.

Vielen dank für die bisherigen Antworten und das Verständnis :/
 
G

Gast2

Gast
So kompliziert kann doch dieses Programm nicht sein. Also einfach nur Bestellungen Anlegen, Mitarbeiter anlegen und Artikel anlegen und ggf löschen, ändern.
/

Je nachdem wieviel Java du kannst... Ich glaube du solltest dir erstmal die Basics aneignen, dass du überhaupt weißt was du da machst und dir nicht irgendwas zusammen kopierst.Hier wird dir keiner dein Programm machen
 

pepe

Mitglied
Ist mir schon klar ;) erwarte ich auch garnicht^^
bin nur leicht unter Druck aber ja okay
weiß jemand wenigstens ne Lösung wegen der Bestell,- bzw Kundennummern?
 
G

Gast2

Gast
Das kannst du in deiner DB Tabelle machen, einfach ID Spalte setzen und dann kannst du einstellen dass er automatisch hochzählen soll... Kann bei jeder DB anders sein!
Und dann einfach ein Insert machen ohne die ID zu setzen!
 
Zuletzt bearbeitet von einem Moderator:

Firestorm87

Bekanntes Mitglied
Java:
static String PrimKey = "SELECT id FROM tabelle ORDER BY id DESC";

private int getNextPrimaryKey() {
		this.connect();
		Connection con = this.getConnection();

		Statement psPrimary = null;
		int key = 0;
		try {
			psPrimary = con.createStatement();
			ResultSet result = psPrimary.executeQuery(PrimKey);
			if (result.next()) {
				key = result.getInt("id");
			}
		} catch (SQLException e) {
			behandleSQLFehler(e);
		}
		this.disconnect();
		return key + 1;
	}

So habe Ich das gelöst um den nächsten Key selber auszulesen....
 

Ähnliche Java Themen


Oben