MySQL Shopsystem mit mysql und Java

Zweifaenger

Mitglied
Hallo zusammen,
ich bin zur Zeit dabei ein Shopsystem zu entwickeln. Bei Diesem bekommt der Administrator ein Control Panel, welches als Java Application läuft. Der Client (Webshop) wird von einem Freund programmiert, sodass ich mich damit nicht auseinander setzen muss. :toll:

Java lerne ich seit ca 1 1/2 Jahren in der Schule und mit der Funktionsweise von mysql kenne ich mich grundlegend aus.

Als Nachschlagewerke nutze ich die Bücher die ich mir aus der Bibliothek geholt habe und das Internet.

Um nicht bei jeder Frage einen neuen Thread aufmachen zu müssen, mache ich hiermit diesen auf und poste nach und nach all meine Fragen, hoffe das ist ok so.

Mit dem CP hat der Admin die Möglichkeit neue Artikel hinzuzufügen, sich seine aktuellen Artikel anzuzeigen, diese zu bearbeiten oder welche zu löschen.

Ich habe mir überlegt das CP folgendermaßen aufzubauen:

3 Pakete:
- main (Klassen: hauptklasse)
- mysql (Klassen: (verbinden,trennen)
- aufgaben (Klassen: bearbeiten,anzeigen,hinzufügen,entfernen)


Hauptklasse: nach gedrücktem Knopf richtige Aufgabe auswählen

Verbinden: Verbindung zur mysql Datenbank herstellen
Trennen: Verbindung trennen

bearbeiten: Werte in der Tabelle umändern
anzeigen: Werte aus der Tabelle auslesen
hinzufügen: neue Werte in die Tabelle eintragen
entfernen: Werte aus der Tabelle entfernen



Das Programm soll dann folgendermaßen ablaufen:
User drückt einen Knopf- > Hauptklasse wählt passende Aufgabe aus -> Aufgabe stellt Verbindung her -> Aufgabe sendet sql Code an Server -> Aufgabe packt relevante Werte in Variablen -> Aufgabe schließt die Verbindung wieder -> Hauptklasse ließt Variablen aus und stellt diese dar.

Was haltet ihr von der Möglichkeit dies so zu realisieren?


Zum Testen wie man eine Verbindung zur Datenbank herstellt, habe ich mit Hilfe von Büchern und Tutorials folgendes zusammengebaut:

Java:
package aufgaben;

import java.sql.*;

public class entfernen 
	{
	static String dBUser = "root";
	static String dBPass = "";
	static String url = "jdbc:mysql://localhost:3306/facharbeit";
	static String table = "Artikel";
	
	
	public static void main(String[] args)
	{ String lname = "Karatekid";
		try
		{
			Connection myConn = DriverManager.getConnection(url, dBUser, dBPass); 
			Statement myStmt = myConn.createStatement();
			String sql = "delete from Artikel where name = " + "'"+lname+"'" ;
			int rowsAffected = myStmt.executeUpdate(sql);
			System.out.println("rows Affected: " + rowsAffected);
			System.out.println("Delete complete!");
		}
		catch (Exception exc )
		{
			exc.printStackTrace();
		}
	
	}

Mit dieser Variante klappt auch alles, aber das ist mir ein bisschen zu viel für jede Aufgabe alles neu schreiben zu müssen.


Wenn ich das richtige sehe, stellt folgendes die Verbindung her:
Java:
Connection myConn = DriverManager.getConnection(url, dBUser, dBPass); 
			Statement myStmt = myConn.createStatement();

Könnte ich also diesen Teil in die Klasse "verbinden" verschieben? Wie kann ich dann executeUpdate oder executeQuery ausführen?



Würde mich über Hilfe freuen, und denkt dran: jeder fängt mal an ;)

Gruß Zweifaenger
 
Zuletzt bearbeitet:

Joose

Top Contributor
Um nicht bei jeder Frage einen neuen Thread aufmachen zu müssen, mache ich hiermit diesen auf und poste nach und nach all meine Fragen, hoffe das ist ok so.

Bitte mache für spezifische Fragen jeweils einen neuen Thread auf, so das man anhand des Titels entscheiden kann ob der Inhalt für jemanden relevant ist usw.
Außerdem gibt es Leute die vielleicht ähnliche Probleme haben und wenn alles in einen Thread geschrieben wird lässt es sich schwerer finden!

3 Pakete:
- main (Klassen: hauptklasse)
- mysql (Klassen: (verbinden,trennen)
- aufgaben (Klassen: bearbeiten,anzeigen,hinzufügen,entfernen)


Hauptklasse: nach gedrücktem Knopf richtige Aufgabe auswählen

Verbinden: Verbindung zur mysql Datenbank herstellen
Trennen: Verbindung trennen

bearbeiten: Werte in der Tabelle umändern
anzeigen: Werte aus der Tabelle auslesen
hinzufügen: neue Werte in die Tabelle eintragen
entfernen: Werte aus der Tabelle entfernen

....
Was haltet ihr von der Möglichkeit dies so zu realisieren?

Ja eine Aufteilung der Klassen in unterschiedliche Pakete ist immer sinnvoll
Aber zu deinen Klassen: Eine Klasse beschreibt immer ein Objekt. Zum Beispiel: Auto, Verbindung, Artikel, Käufer, .....
Schlechte Namen für Klassen sind einerseits "Hauptklasse" und eben "Verben". Noch dazu fehlen hier in der Aufzählung die Klassen für das UI ;)

Du solltest lieber Klassen wie "Artikel", "Kunde", "Bestellung" verwenden, entsprechende DAOs um die Daten aus der DB zu lesen/ändern/löschen/einzufügen.
Also hier fehlen die Grundlagen bzw. die Erfahrung mit OPP.

Zum Testen wie man eine Verbindung zur Datenbank herstellt, habe ich mit Hilfe von Büchern und Tutorials folgendes zusammengebaut:
......
Mit dieser Variante klappt auch alles, aber das ist mir ein bisschen zu viel für jede Aufgabe alles neu schreiben zu müssen.

Stimmt deswegen wird eigentlich immer gekapselt und es gibt dann eine eigene Klasse die sich um die Kommunikation mit der

Wenn ich das richtige sehe, stellt folgendes die Verbindung her:
Java:
Connection myConn = DriverManager.getConnection(url, dBUser, dBPass); 
			Statement myStmt = myConn.createStatement();

Könnte ich also diesen Teil in die Klasse "verbinden" verschieben? Wie kann ich dann executeUpdate oder executeQuery ausführen?

Ja damit wird zwar ein Connection Objekt erstellt, aber ich glaube dir fehlt noch der Aufruf von "open()" damit die Verbindung wirklich aufgebaut wird :)
Ich würde lieber mit PreparedStatement arbeiten, aber die Grundlagen dazu sind eig gleich. Du erzeugst ein Statement, gibst diesem Objekt dann den SQL Befehl als String und kannst je nachdem eine der "execute..." Methoden ausführen.
 
Zuletzt bearbeitet:

Zweifaenger

Mitglied
Bitte mache für spezifische Fragen jeweils einen neuen Thread auf, so das man anhand des Titels entscheiden kann ob der Inhalt für jemanden relevant ist usw.
Außerdem gibt es Leute die vielleicht ähnliche Probleme haben und wenn alles in einen Thread geschrieben wird lässt es sich schwerer finden!

Alles klar werde ich dann so machen.

Ja eine Aufteilung der Klassen in unterschiedliche Pakete ist immer sinnvoll
Aber zu deinen Klassen: Eine Klasse beschreibt immer ein Objekt. Zum Beispiel: Auto, Verbindung, Artikel, Käufer, .....
Schlechte Namen für Klassen sind einerseits "Hauptklasse" und eben "Verben". Noch dazu fehlen hier in der Aufzählung die Klassen für das UI ;)

Du solltest lieber Klassen wie "Artikel", "Kunde", "Bestellung" verwenden, entsprechende DAOs um die Daten aus der DB zu lesen/ändern/löschen/einzufügen.
Also hier fehlen die Grundlagen bzw. die Erfahrung mit OPP.

Habe hoffentlich verstanden wie du das meinst. Folgendes ist jetzt dabei herausgekommen: Bildschirmfoto 2015-01-14 um 13.15.55.jpg

Die Oberfläche hätte ich jetzt in der Klasse main gestaltet, da mir das in der Schule so beigebracht wurde.

Ja damit wird zwar ein Connection Objekt erstellt, aber ich glaube dir fehlt noch der Aufruf von "open()" damit die Verbindung wirklich aufgebaut wird :)
Ich würde lieber mit PreparedStatement arbeiten, aber die Grundlagen dazu sind eig gleich. Du erzeugst ein Statement, gibst diesem Objekt dann den SQL Befehl als String und kannst je nachdem eine der "execute..." Methoden ausführen.

Werde ich mich später drum kümmern, versuche erstmal den grundlegenden Aufbau zu schaffen :)
 

ARadauer

Top Contributor
Mal grob... wie schon gesagt wurde, sind Objekte eher Dinge und keine Verben. Eine Trennen Klasse macht überhaupt keinen Sinn.
Ich würde auch nicht die Business Logik in Fachobjekte wie Auto packen.
Sieh es etwa so: Mach dir eine Datenbank Klasse die dir die Verbindung aufbaut und die Queries absetzt.
Ein AutoService lädt, speichert, löscht dann mit Hilfe der Datenbank Klasse Objekte vom Typ Auto..
 

Zweifaenger

Mitglied
Mal grob... wie schon gesagt wurde, sind Objekte eher Dinge und keine Verben. Eine Trennen Klasse macht überhaupt keinen Sinn.
Ich würde auch nicht die Business Logik in Fachobjekte wie Auto packen.
Sieh es etwa so: Mach dir eine Datenbank Klasse die dir die Verbindung aufbaut und die Queries absetzt.
Ein AutoService lädt, speichert, löscht dann mit Hilfe der Datenbank Klasse Objekte vom Typ Auto..

Ich habe keine Klasse die sich trennen oder ähnliches nennt.

Die Klasse "Verbindung" ist in dem Paket mysql und beinhaltet unter anderem die Methode trennen()
 
Zuletzt bearbeitet:

Joose

Top Contributor
Habe hoffentlich verstanden wie du das meinst. Folgendes ist jetzt dabei herausgekommen:

Wie ARadauer schon sagt: Die Methoden "anzeigen", "bearbeiten usw. in der Klasse Artikel sind nicht wirklich "schön"/"gut".
Die Klasse Artikel sollte nur einfach die Daten für einen Artikel kapseln können. (siehe z.B.:Plain Old Java Object)

Anmerkung: Klassennamen werden in Java in UpperCamelCase geschrieben, Methoden und Attribute werden in lowerCamelCase geschrieben :)


Die Oberfläche hätte ich jetzt in der Klasse main gestaltet, da mir das in der Schule so beigebracht wurde.

Da es sich um ein ControlPanel für einen Webshop handelt, wird es meiner Meinung nach sehr viele unterschiedliche Panels geben.
Alles in die Klasse "main" zugeben könnte unübersichtlcih werden.
Außerdem sollte es zwischen UI und Businesslogik immer eine schöne Trennung geben. (Hier wäre zum Beispiel MVC zu erwähnen)

Mal grob... wie schon gesagt wurde, sind Objekte eher Dinge und keine Verben. Eine Trennen Klasse macht überhaupt keinen Sinn.
Ich würde auch nicht die Business Logik in Fachobjekte wie Auto packen.

Stimmt da habe ich mich ungenau ausgedrückt ;)

Ich habe keine Klasse die sich trennen oder ähnliches nennt.

Wahrscheinlich war das noch auf deinen 1.Post bezogen. Dort hattest du ja noch die Klasse "trennen" erwähnt.
 

Zweifaenger

Mitglied
Wie ARadauer schon sagt: Die Methoden "anzeigen", "bearbeiten usw. in der Klasse Artikel sind nicht wirklich "schön"/"gut".
Die Klasse Artikel sollte nur einfach die Daten für einen Artikel kapseln können. (siehe z.B.:Plain Old Java Object)

Kannst du mir mal bitte ein Beispiel geben wie das mit der "Kapselung" aussehen würde, verstehe bei dem Wikipedia Link leider nicht alles

Da es sich um ein ControlPanel für einen Webshop handelt, wird es meiner Meinung nach sehr viele unterschiedliche Panels geben.
Alles in die Klasse "main" zugeben könnte unübersichtlcih werden.
Außerdem sollte es zwischen UI und Businesslogik immer eine schöne Trennung geben. (Hier wäre zum Beispiel MVC zu erwähnen)

Eigentlich war geplant alles in ein CP zu packen. Schaue ich dann wie voll das wird.
 

Joose

Top Contributor
Kannst du mir mal bitte ein Beispiel geben wie das mit der "Kapselung" aussehen würde, verstehe bei dem Wikipedia Link leider nicht alles

Hier ein besserer Link zum Begriff Kapselung: Datenkapselung (Programmierung)
Bei der Kapselung geht es eigentlich nur darum Eigenschaften die ein bestimmtes Objekt/Ding definieren in einer Klasse zu kapseln.
Also anstatt mit 3 String Listen zu arbeiten entwirft man eine Klasse mit 3 Attributen und erzeugt dann nur noch eine Liste mit Objekten dieser Klasse.

Eigentlich war geplant alles in ein CP zu packen. Schaue ich dann wie voll das wird.

Alles in einem Programm unterzubringen JA, alles auf ein einziges Panel bzw. in eine einzige Klasse zu stopfen NEIN.
Und glaub mir du wirst mehrere Panels und Klassen brauchen.

PS: Was bis jetzt nicht gefallen ist: Soll es ein universeller Webshop sein oder spezielle auf bestimmte Produkte beschränkt?
Also kann man ala Amazon alles mögliche reinstellen oder zum Beispiel nur "Videospiele"?
 
Zuletzt bearbeitet:

Zweifaenger

Mitglied
Hier ein besserer Link zum Begriff Kapselung: Datenkapselung (Programmierung)
Bei der Kapselung geht es eigentlich nur darum Eigenschaften die ein bestimmtes Objekt/Ding definieren in einer Klasse zu kapseln.
Also anstatt mit 3 String Listen zu arbeiten entwirft man eine Klasse mit 3 Attributen und erzeugt dann nur noch eine Liste mit Objekten dieser Klasse.

Danke werde ich mich mal mit auseinandersetzen.


PS: Was bis jetzt nicht gefallen ist: Soll es ein universeller Webshop sein oder spezielle auf bestimmte Produkte beschränkt?
Also kann man ala Amazon alles mögliche reinstellen oder zum Beispiel nur "Videospiele"?

Es wird ein Film Verkauf
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin Java und MySQL MariaDB - WHERE-Klausel Datenbankprogrammierung 17
W MySQL-Connector funktioniert nicht über WLAN -> MacOS Datenbankprogrammierung 10
Juelin MySQL Datenbankmit glassfish und Netbeans Datenbankprogrammierung 18
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
Warum funktioniert MySQL nicht Datenbankprogrammierung 8
M MySQL Datenbank in Array Datenbankprogrammierung 2
P MySQL- Neues Passwort Datenbankprogrammierung 1
btwX28 mysql abfrage über phpmyadmin Datenbankprogrammierung 8
sserio SQL oder MySQL Datenbankprogrammierung 44
OnDemand Mysql Query Builder Datenbankprogrammierung 1
Z MySQL "Too many connections" auch nach schliessen der Connections. Datenbankprogrammierung 10
yakazuqi MySQL MySQL Connection reset Datenbankprogrammierung 7
OnDemand MySql Foreign Key nötig oder unnötig Datenbankprogrammierung 3
M Mysql Views und Hibernate Caching Datenbankprogrammierung 4
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
OnDemand MySQL und mongoDB wann macht was Sinn? Datenbankprogrammierung 11
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
Avalon Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen Datenbankprogrammierung 10
D MYSQL goorm IDE - Wie speichern? Datenbankprogrammierung 0
OnDemand Mysql UPDATE if condition Datenbankprogrammierung 14
D MySQL Geburtsdatum per KW abfragen Datenbankprogrammierung 1
C Java MySQL check if value exists in database Datenbankprogrammierung 2
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
J MySQL - Primary Key Date,Time vs ID Datenbankprogrammierung 16
ruutaiokwu MySQL: Messwerte, welche stagnieren interpolieren? Datenbankprogrammierung 2
S Datenbank MySQL und Java Datenbankprogrammierung 8
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
P Adressadministration mit Java und mySQL Datenbankprogrammierung 14
D MySQL Abfrage Datenbankprogrammierung 5
D MySQL Abfrage sortieren Datenbankprogrammierung 4
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
J MySQL MySQL Risiken bei Stromausfall minimieren Datenbankprogrammierung 9
D MySQL Abfrage SUM datediff Datenbankprogrammierung 3
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
X MySQL Java hat keinen Zugriff auf MySQL Datenbankprogrammierung 9
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
D MySQL Connection richtig herstellen. Wie ? Datenbankprogrammierung 7
D Multiple Connection mit MySQL Datenbankprogrammierung 4
D MySQL Eibinden des "mysql-connector" in eine fertige Jar Datenbankprogrammierung 3
L MySQL Android zu externer MySQL Datenbank verbinden Datenbankprogrammierung 5
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
D MySQL Zeilen kumulieren Datenbankprogrammierung 8
D MySQL Abfrage mit kumulierten Werten Datenbankprogrammierung 16
K Servlet-MySQL DB Datenbankprogrammierung 2
X MySQL Json String in MySQL einfügen. Datenbankprogrammierung 20
OnDemand Update auf Mysql läuft nicht durch Datenbankprogrammierung 30
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
D Datumsformat aus MySQL ändern Datenbankprogrammierung 15
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
K MySQL LAN-MySQL Server mit XAMPP Datenbankprogrammierung 2
R ERModel der Datebanken (ORACLE,MySQL,MS-SQL usw) Datenbankprogrammierung 4
X MySQL In MySQL Funktionen erstellen, wenn Zelle leer dann andere Zelle ändern? Datenbankprogrammierung 9
K Anfängerfrage CSV in MySQL Datenbankprogrammierung 41
I MySQL Wert nachträglich bearbeiten Datenbankprogrammierung 1
N MySQL Datenbank lokal Datenbankprogrammierung 3
B MySQL: Port ändern über GUI? Wo und wie Port ändern? Datenbankprogrammierung 0
B MySQL installieren - silent / User anlegen Datenbankprogrammierung 3
X MySQL Verbindungdsaufbau MySql auf Ubuntu-Server Datenbankprogrammierung 10
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
P MySQL JPA / MySQL - Fehler bei type=innoDB Datenbankprogrammierung 8
M MySQL MySQL DATETIME-Import Datenbankprogrammierung 9
P MySQL Connection Global Datenbankprogrammierung 13
J mySQL- Java Application - Zugriff über Internet Datenbankprogrammierung 3
P MySQL-Verbindung in anderer Klasse nutzen Datenbankprogrammierung 2
D JavaFX Anwendung zugriff auf MySQL DB. Datenbankprogrammierung 2
D MySQL Grundsätzliche Fragen zu MySQL Datenbankprogrammierung 3
B MySQL LogIn Daten im Code verstecken Datenbankprogrammierung 3
M MySQL-Syntax-Fehler Datenbankprogrammierung 1
M In MySql Datenbank schreiben Datenbankprogrammierung 6
D mySQL Timestamp in RegularTimePeriod bzw Second Datenbankprogrammierung 3
H SHOW Tables in Java/MySQL Datenbankprogrammierung 8
windl MySQL und HSQLDB Datenbankprogrammierung 4
S Anbindung zur mysql von mit Swing und AWT Datenbankprogrammierung 22
F MySQL+ Netbeans: Datenbanken mit Automatisch generierten Entity Classes get und set Datenbankprogrammierung 2
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
C MYSQL kann wert nicht eintragen Datenbankprogrammierung 3
D Aktualisierung einer ListView mit Daten aus MySQL-DB Datenbankprogrammierung 5
F BPlaced MySql Datenbank ansprechen Datenbankprogrammierung 5
S MySQL MySQL will einfach nicht, bitte um Rat Datenbankprogrammierung 4
M MySQL Datenbank durchsuchen Datenbankprogrammierung 5
Z MySQL mysql Facharbeit: Tipps und Ideen gesucht Datenbankprogrammierung 5
dat_vin JavaFX Datenbankverbindung über JPA und MySQL Error Datenbankprogrammierung 0
K MySQL Datenbank 2facher Zugriff Datenbankprogrammierung 1
S [MySQL] Topliste Datenbankprogrammierung 2
H Datenbank-Anbindung Java/MySQL Datenbankprogrammierung 2
T MySQL MySQL - Insert into fügt zwei identische Datensätze ein Datenbankprogrammierung 2
A Eine MySQL Zeile mit JDBC löschen Datenbankprogrammierung 5
J Dateien in MySQL speichern & indizieren Datenbankprogrammierung 2
B MySQL MySQL-Abfrage von aufsummierter Zeit Datenbankprogrammierung 3
K MySQL Datenbankbackups Datenbankprogrammierung 5
P MySQL INSERT / UPDATE MySQL - perStoredProcedure oder direkt im Code Datenbankprogrammierung 3
kaoZ HyperSQL vs. MYSQL Datenbankprogrammierung 4
L JSONArray/JSONObject MySQL-Servlet Abfrage Datenbankprogrammierung 2
V Internationalization mit MySql Datenbankprogrammierung 1
K Adressverwaltung mit MySql und Java? Datenbankprogrammierung 11
M Java Mysql verbinden Datenbankprogrammierung 3
L Zugriff auf lokal gespeicherte mySQL Datenbank Datenbankprogrammierung 3
L MySQL App/Java Zugriff auf Mysql-DB funktioniert nicht Datenbankprogrammierung 1

Ähnliche Java Themen

Neue Themen


Oben