NotizenDB[1]. - Lehrer-Uni

Werbung
1
1. 1. Datenbanken
1. Datenmodellierung
Daten derselben Art werden zu einer Datenklasse zusammengefasst. Eine Datenklasse wird gewöhnlich in
Form einer Tabelle dargestellt. Ein einzelnes Objekt der Datenklasse heißt Datensatz. Ein Datensatz entspricht also einer Tabellenzeile.
Beispiel 1: Die Kunden einer Firma sollen in einer Tabelle Kunde gespeichert werden, denn diese Daten
gehören alle zur gleichen Datenklasse. Ein einzelner Kunde steht in einer Tabellenzeile.
In eine andere Datenklasse gehören die Waren, die die Firma herstellt. Wir speichern sie in der Tabelle
Ware. Die Datenklasse der Waren besitzt andere Attribute (Merkmale) wie die Datenklasse der Kunden.
Bei den Waren interessieren uns z. B. der Preis, die Bezeichnung der Ware, die noch im Lager vorhandene
Anzahl.
Die Klasse Ware:
Ware
- warennummer
- bezeichnung
- preis
- anzahl
Aufgabe 1: Zeichne daneben ein solches Diagramm für die Klasse Kunde!
Die Attribute der Klasse Ware tauchen in der Tabelle als Spaltennamen auf:
warennummer
bezeichnung
preis
anzahl
Die Klasse der Kunden und die Klasse der Waren haben eine Beziehung (Relation) zueinander. Deshalb
konstruiert man relationale Datenbanken.
2
2. Beziehungen
Die Beziehung zwischen Frauen und Männern ist in der Regel eine 1:1- Beziehung.
Frau
1
verheiratet
1
Mann
Eine 1:n- Beziehung ist beispielsweise die Beziehung zwischen Firmen und Angestellten, da eine Firma
mehrere Angestellte beschäftigen, aber ein Angestellter nicht in mehreren Firmen beschäftigt sein kann:
Firma
1
beschäftigt
n
Angestellter
Eine n:m- Beziehung entsteht beispielsweise bei einem Buchverleih. Ein Kunde kann mehrere Bücher
ausleihen. Ein Buch kann mehrmals nacheinander an verschiedenen Kunden ausgeliehen werden:
Kunde
n
leihen
m
Buch
Natürlich könnte die Firma jedes Mal, wenn ein Kunde kauft, die volle Adresse des Kunden aufnehmen
und alle Daten der Waren. Dieses wäre aber sehr umständlich. Also gibt man dem Kunden eine Nummer
und ebenso jeder Ware. Die Beziehung der beiden ist dann einfach durch eine Tabelle herzustellen, in der
Kundennummer und Warennummer stehen und eventuell noch das Datum und ein Vermerk über die
Zahlweise.
Aufgabe 3: Um welche Art von Beziehung handelt es sich im Folgenden jeweils?
Lehrer
Instrumentalunterricht
Fitnesstrainer
unterrichten
teilnehmen
leitet
Klassen
Musikschüler
Gymnastikkurse
3
In die Tabelle Kauf kommen die beiden Schlüssel und ein Datum. Es wird nun eine Verbindung der Tabellen benötigt. Wir wählen im Menü Extras Beziehungen, fügen die Tabellen hinzu und schließen. Dann
ziehen wir die Felder kundennummer von Kunde und warennummer von Ware in die Tabelle Kauf. (Referentielle Integrität aktivieren.)
Aufgabe 5:
Erstelle für die Klasse Flug mit den Attributen fluglinie, abflugsort, abflugszeit, ankunftsort, ankunftszeit,
passagierzahl eine Tabelle mit dem Primärschlüssel flugnummer. Die Klasse Kunde kann wie bei Aufgabe
4 gestaltet werden.
Aufgabe 6:
Erstelle für die Klasse Buch mit den Attributen buchnummer, titel, verfasser, verlag, erscheinungsjahr,
fachgebiet, bemerkung eine Tabelle. Die Klasse Kunde kann wie bei Aufgabe 4 gestaltet werden, zusätzlich sollen noch schule und klasse registriert werden.
4
In unserer Datenbank erstellen wir eine Abfrage in der Entwurfsansicht. Dazu müssen wir zu unserer Abfrage eine oder mehrere Tabellen hinzufügen.
Dann wählen wir im Menü Ansicht SQL- Ansicht. In das sich öffnende Textfenster können wir den Abfragetext schreiben. Wir aktivieren jetzt im Menü Abfrage Ausführen und es erscheint das Ergebnis der Abfrage als Tabelle.
5
3. Abfragesprache SQL
In eine Datenbank bringt man nicht nur Daten hinein, man will auch Informationen aus ihr herausziehen.
Das geschieht durch Abfragen. Eine einfache Sprache wurde dafür entwickelt: SQL (Standard Query Language). Wir besprechen die wichtigsten Vokabeln von SQL:
Auswahl von Daten mit dem SELECT- Befehl
Beispiel 1:
SELECT * FROM Kunde;
Mit diesem Befehl werden aus der Tabelle Kunde alle Datensätze ausgewählt und angezeigt. Das Sternchen * ist ein Joker für alles.
Beispiel 2:
SELECT bezeichnung, preis FROM Ware;
Mit diesem Befehl werden aus der Tabelle Ware die Spalten bezeichnung und preis ausgewählt.
Beispiel 3:
SELECT bezeichnung, preis FROM Ware WHERE preis>10;
Mit diesem Befehl werden aus der Tabelle Ware die Spalten bezeichnung und preis ausgewählt und deren
Inhalte angezeigt, wenn der Preis höher als 10 ist.
Beispiel 4:
SELECT * FROM Kunde WHERE nachname LIKE ”S%”;
Hier werden die Zeilen ausgewählt, bei denen der Nachname mit S anfängt. Das Prozentzeichen ist ein
Platzhalter für irgendwelche Zeichen dahinter.
Beispiel 5:
SELECT bezeichnung, preis FROM Ware ORDER BY preis;
Mit diesem Befehl werden aus der Tabelle Ware die Spalten bezeichnung und preis ausgewählt und nach
Preis geordnet.
Aufgabe 7:
Gib den gesamten Inhalt der Tabelle Ware aus. Wie lautet der SQL- Befehl dafür?
Aufgabe 8:
Wähle aus der Tabelle Kunde alle Kunden aus, deren Postleitzahl mit 69 beginnt.
6
Verbinden von zwei Tabellen mit JOIN:
Die Objekte der Klasse Flug werden in der gleichnamigen Tabelle gespeichert. Wir geben jedem Datensatz
von Flug eine eindeutige Flugnummer (Primärschlüssel).
Die Tabelle Kunde enthält die Daten der Kunden. Bei jeder Flugbuchung tragen wir die Flugnummer beim
Kunden ein. So werden jedem Passagier seine Flugdaten zugeordnet.
Bei der Abfrage der Datenbank möchten wir sowohl die Daten des Kunden als auch die Daten seines Fluges anzeigen.
SELECT Vorname, Nachname, Abflughafen, Flugziel, Flugpreis
Diese Verbindung zwischen Kunden und Flug stellt der Befehl INNER JOIN her.
Flug INNER JOIN Kunde
Manche Flüge werden mehrfach gebucht, mache gar nicht. Wir interessieren uns für die Flugnummern aus
der Tabelle Flug, die auch in der Tabelle Kunde vorkommen:
ON Fluege.Flugnummer=Kunden.Flugnummer
Die ganze Abfrage kann also z. B. so aussehen:
Beispiel 6:
SELECT Vorname, Nachname, Abflughafen, Flugziel, Flugpreis
FROM
Flug INNER JOIN Kunde
ON Flug.flugnummer=Kunde.flugnummer
ORDER BY flugpreis DESC;
Aufgabe 9:
Praktiziere das Analoge mit den Tabellen Ware und Kunde. Wie lautet der SQL- Befehl? Drucke Deine
Ergebnistabelle aus.
Verbinden von drei Tabellen mit JOIN:
In einem Flugzeug sitzen mehr als eine Person. Es wäre also dumm, in der Tabelle der Flüge alle Personendaten einzutragen. Genauso kann es passieren, dass ein Passagier mehrere Flüge bucht, oder umsteigen
muss. Deshalb ist es sinnvoll, eine dritte Tabelle mit den Buchungen anzulegen. Jetzt stellen wir mit
INNER JOIN zuerst eine Verbindung der Tabellen Kunde und Buchung her und dann mit INNER JOIN
eine Verbindung von Flug und Buchung:
Beispiel 10:
SELECT * FROM
Flug INNER JOIN
(Kunde INNER JOIN Buchung ON Kunde.flugnummer = Buchung.flugnummer)
ON Flug.flugnummer = Buchung.flugnummer;
Beispiel 11:
SELECT vorname, nachname
FROM Kunde INNER JOIN (Buch INNER JOIN Entleihung ON Buch.buchnummer = Entleihung.buchnummer) ON Kunde.kundennummer = Entleihung.kundennummer
WHERE datum>#3/4/2006#;
7
Wie im vorhergehenden Beispiel sind drei Tabellen verbunden. Es werden allerdings nur die Spalteninhalte von vorname und nachname angezeigt. Die Auswahl der Datensätze wird noch eingeschränkt durch die
Bedingung, dass das Datum der Entleihung nach dem 4. März 2006 liegen soll.
Aufgabe 9:
Praktiziere das Analoge mit den Tabellen Ware, Kunde und Kauf. Wie lautet der SQL- Befehl? Drucke
Deine Ergebnistabelle aus.
8
4. Datenbanken auf dem Server
Häufig steht hinter einer Webseite eine Datenbank, in die Daten gespeichert werden, oder aus der Daten
abgerufen werden. Das Programm, das die Daten aus der Datenbank abfragt und an den Kunden weiterreicht, läuft auf dem Webserver, ebenso das Datenbankmanagementsystem. Das meistbenutzte Datenbankmanagementsystem im Internet ist MySQL. Man kann es sich downloaden. Wir können so unseren PC
zum Server machen und zu Lernzwecken die gleichen Programme laufen lassen, die auf einem Internetserver benutzt werden.
Nach dem Download von MySQL stehen im Unterverzeichnis
bin
bei einem Windows- Rechner die ausführbaren Dateien. Wir starten ein selbstständiges Datenbankmanagementsystem im Betriebssystem. Das MSDOS-Betriebssystemfenster finden wir unter Windows mit
Start – Programme – Zubehör – Eingabeaufforderung
Wir wechseln in das Verzeichnis P: cd P8\mysql\bin und starten das Datenbankmanagementsystem mit
mysqld-nt –standalone
Dann öffnen wir uns eine Eingabemöglichkeit, indem wir im Verzeichnis bin die Datei
mysql.exe
starten. (Dies geht auch durch Doppelklick im Explorer.) Es öffnet sich wieder ein Betriebssystemfenster
(mit schwarzem Hintergrund) und der Eingabeaufforderung
mysql>
Wir können hier SQL-Befehle eintippen, z. B.:
SHOW DATABASES;
Es werden die vorhandenen Datenbanken angezeigt. Eine neue Datenbank mit Namen Firma machen wir
z. B. mit
CREATE DATABASE Firma;
Eine vorinstallierte Datenbank ist test. Wir können sie benutzen sie mit
USE test; (bzw. USE Firma;)
Eine Tabelle erstellen wir mit
CREATE TABLE Ware (warennummer INTEGER(10), bezeichnung VARCHAR(50),
preis FLOAT(10,2), anzahl INTEGER(10) );
Hier ist Ware der Tabellenname und warennummer, bezeichnung, preis, anzahl sind Spaltennamen in der
Tabelle. Zu jeder Spalte muss angegeben werden, von welchem der Typ ihr Inhalt sein soll und wie viel
Platz dafür zu reservieren ist. Die Warennummer ist hier eine ganze Zahl mit höchstens 10 Stellen, die
Bezeichnung eine Buchstabenkette mit höchstens 50 Buchstaben, der Preis eine Fließkommazahl mit 2
Nachkommastellen. Es gibt noch weitere mögliche Typen, wie z. B. DATE. Lies dazu bei Bedarf im Online-Handbuch nach: http://www.little-idiot.de/mysql/mysql-110.html#create
Die Eigenschaften einer fertigen Tabelle lassen wir uns anzeigen mit
DESCRIBE Ware;
Mit ALTER können wir die Tabelleneigenschaften noch verändern.
Mit INSERT fügen wir Datensätze in die Tabelle ein:
INSERT INTO Ware VALUES (1, "Radiergummi", 0.65 , 20);
9
Die Daten einer Tabelle können wir auch auslesen und in einem Textfile auf der Festplatte speichern:
SELECT * FROM Ware INTO OUTFILE "Ware.txt";
Jetzt befindet sich die Textdatei im Unterverzeichnis data\test.
Umgekehrt können wir können Daten z. B. aus einer Excel-Tabelle als Textdatei Ware.txt speichern. Dabei
sind die Spalten durch Tabulator-Zeichen und die Zeilen durch Enter/New Line getrennt. Diese Datei können wir auch bei Bedarf mit einem Editor bearbeiten. Wir lesen sie in die Datenbank ein mit:
LOAD DATA LOCAL INFILE "Ware.txt" INTO TABLE Ware;
Aufgabe: Übertrage die Tabellen Ware, Kunde und Kauf von Access nach MySQL.
10
2.
Client- Server- Kommunikation
Client
HTML-Formular
2.1
Server
Servlet
MySQL-Datenbank
INSERT INTO Ware …
<INPUT TYPE=TEXT
NAME=“warennummer“>
getParameter("warennummer")
<INPUT TYPE=TEXT
NAME=“bezeichnung“>
getParameter("bezeichnung")
w.warennummer,
w.bezeichnung
HTML-Eingabeformular
<HTML> <HEAD> <TITLE> </TITLE> </HEAD> <BODY>
<H1> Kommunikation mit ServletZwei </H1>
<FORM METHOD=POST
ACTION = "http://localhost:8080/examples/servlet/ServletZwei">
Mein Vorname: <INPUT TYPE = TEXT SIZE = 20 NAME = "vorname" > <BR>
Mein Nachname: <INPUT TYPE = TEXT SIZE = 20 NAME = "nachname"> <BR>
<INPUT TYPE = SUBMIT>
</FORM> </BODY> </HTML>
2.2
Servlets: Anfrage und Antwort
Ein Servlet kann eine Anfrage aus der Html- Seite mit den dort eingegebenen Daten empfangen:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public class Servlet1 extends HttpServlet {
String vorn;
public void doPost(HttpServletRequest anfrage, HttpServletResponse antw)
throws ServletException, IOException {
vorn = anfrage.getParameter("vorname");
antw.setContentType("text/html");
PrintWriter ausgabe = antw.getWriter();
ausgabe.println("<HTML> <BODY> <FONT SIZE = '7' COLOR = 'red'>");
ausgabe.println("Hallo,");
ausgabe.println(vorn);
ausgabe.println(", guten Nachmittag!");
ausgabe.println("</FONT> </BODY> </HTML>");
ausgabe.close();
11
}
Werden viele Daten empfangen und soll eine größere HTML- Seite zurückgeschickt werden, so wird das
Programm übersichtlicher, wenn wir extra Programmteile für das Empfangen und das Antworten schreiben:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public class Servlet3 extends HttpServlet {
String vorn, nachn;
public void doPost(HttpServletRequest anfrage, HttpServletResponse antw)
throws ServletException, IOException {
empfangen(anfrage);
antw.setContentType("text/html");
PrintWriter ausgabe = antw.getWriter();
antworten(ausgabe);
ausgabe.close();
}
public void empfangen(HttpServletRequest fr) {
vorn = fr.getParameter("vorname");
nachn = fr.getParameter("nachname");
}
public void antworten(PrintWriter a) {
a.println("<HTML> <BODY> <FONT SIZE = '7' COLOR = 'red'>");
a.println("Hallo,");
a.println(vorn + ", "+ nachn);
a.println(", guten Nachmittag, Informatik- Kurs!");
a.println("</FONT> </BODY> </HTML>");
}
}
Aufgabe: Erstelle für die Klasse Ware ein HTML-Eingabeformular, in das die Attribute der Waren (siehe
Seite1) eingegeben werden und ein Java-Servlet, das die Eingaben empfängt und zunächst nur zur Kontrolle die Eingaben an den User zurückschickt.
2.3
Servlet: Erzeugung einer neuen Datenbanktabelle mit CREATE TABLE
Wir haben bei einem Provider im Internet die Möglichkeit bekommen, in einer eigenen Datenbank auf
einem Webserver Daten zu speichern. Den Namen des Servers, auf dem sich unsere Datenbank befindet,
den Datenbanknamen, unseren Login-Namen und ein Passwort erhalten wir ebenfalls vom Provider. Wir
benutzen hier eine MySQL- Datenbank. Dafür ist noch ein Datenbanktreiber anzugeben:
org.gjt.mm.mysql.Driver
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
import java.sql.*;
public class ServletTabelleNeu extends HttpServlet {
String ergebnis="ok";
public void doPost(HttpServletRequest anfrage, HttpServletResponse antw)
throws ServletException, IOException {
eintragen();
}
public void eintragen() {
String url = "jdbc:mysql://server01.bshsw.de/usr_web10_1";
String user = "web10"; String psst = "jlfh872f";
String treiber = "org.gjt.mm.mysql.Driver";
Connection con = null; Statement s;
12
String eintrag="CREATE TABLE Ware (warennummer INTEGER(10),
bezeichnung VARCHAR(50), preis FLOAT(10,2), anzahl INTEGER(10) );";
try {
Class.forName(treiber);
con=DriverManager.getConnection(url,user,psst);
s=con.createStatement();
s.execute(eintrag);
}
catch (Exception e) {ergebnis = e.getMessage();}
}
}
Das Servlet ruft die Methode getConnection des DriverManagers auf, um Verbindung zur Datenbank zu
bekommen. In unserem Programm wurde ein String eintrag vorbereitet. Er enthält einen Text, der an die
Datenbank geschickt werden soll. Das muss ein Text sein, den die Datenbank versteht und den sie ausführt. Er ist in der Datenbanksprache SQL abzufassen.
In unserem Fall bewirkt der ausführbare Text (das Statement), dass eine neue Tabelle mit Namen Ware
erstellt wird. Sie enthält vier Spalten mit Namen warennummer, bezeichnung, preis, anzahl.
2.4
Einfügen von Datensätzen in die Tabelle mit dem INSERT-Befehl
Mit INSERT fügen wir Datensätze in die Tabelle ein:
INSERT INTO Kursliste (vorname, nachname, email)
VALUES ("Reinhold", "Ley", "[email protected]");
Die Daten einer Tabelle können wir auch auslesen und in einem Textfile auf der Festplatte speichern:
SELECT * FROM kursliste INTO OUTFILE "kursliste.txt";
Jetzt befindet sich die Textdatei im Unterverzeichnis data\test.
Umgekehrt können wir können Daten z. B. aus einer Excel-Tabelle als Textdatei kursliste.txt speichern.
Dabei sind die Spalten durch Tabulator-Zeichen und die Zeilen durch Enter/New Line getrennt. Diese Datei können wir mit einem Editor bearbeiten. Wir lesen sie in die Datenbank ein mit:
LOAD DATA INFILE "kursliste.txt" INTO TABLE kursliste;
13
In die zuvor erstellte Datenbanktabelle trägt ein Servlet die Daten ein, die es vom User empfangen hat:
<HTML> <HEAD> <TITLE> </TITLE> </HEAD> <BODY>
<H1> Daten Eingabe </H1>
Zu speichern:
<FORM METHOD=POST ACTION = "http://www.dbssoft.de/web10/servlet/ServletWEintrag">
Warennummer: <INPUT TYPE = TEXT SIZE = 20 NAME = "warennummer" > <BR>
Bezeichnung: <INPUT TYPE = TEXT SIZE = 20 NAME = "bezeichnung"> <BR>
Preis: <INPUT TYPE = TEXT SIZE = 20 NAME = "preis"> <BR>
Anzahl: <INPUT TYPE = TEXT SIZE = 20 NAME = "anzahl"> <BR>
<INPUT TYPE = SUBMIT>
</FORM>
</BODY> </HTML>
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
import java.sql.*;
public class ServletWEintrag extends HttpServlet {
Ware w=new Ware();
String ergebnis="ok";
public void doPost(HttpServletRequest anfrage, HttpServletResponse antw)
throws ServletException, IOException {
empfangen(anfrage);
eintragen();
antw.setContentType("text/html");
PrintWriter ausgabe = antw.getWriter();
antworten(ausgabe);
ausgabe.close();
}
public void empfangen(HttpServletRequest fr) {
w.warennummer = Integer.parseInt(fr.getParameter("warennummer"));
w.bezeichnung = fr.getParameter("bezeichnung");
w.preis = Double.valueOf(fr.getParameter("preis")).doubleValue();
w.anzahl = Integer.parseInt(fr.getParameter("anzahl"));
}
public void antworten(PrintWriter a) {
a.println("<HTML> <BODY> <FONT SIZE = '7' COLOR = 'red'>");
a.println("Eingabe:</FONT>");
a.println("<table>");
a.println("<tr><td>Nummer:</td><td>"+w.warennummer+"</td></tr>");
a.println("<tr><td>Bezeichnung:</td><td>"+w.bezeichnung+"</td></tr>");
a.println("<tr><td>Preis:</td><td>"+w.preis+"</td></tr>");
a.println("<tr><td>Anzahl:</td><td>"+w.anzahl+"</td></tr>");
a.println("</table> Eintrag:"+ergebnis);
a.println("</BODY> </HTML>");
}
public void eintragen() {
String url = "jdbc:mysql://server01.bshsw.de/usr_web10_1";
String user = "web10"; String psst = "jlfh872f";
String treiber = "org.gjt.mm.mysql.Driver";
Connection con = null; Statement s;
String eintrag="insert into Ware (warennummer, bezeichnung, preis, anzahl)
values('"+w.warennummer+"','"+w.bezeichnung+"','"+w.preis+"','"+w.anzahl+"')";
try {
Class.forName(treiber);
con=DriverManager.getConnection(url,user,psst);
s=con.createStatement();
14
s.execute(eintrag);
}
catch (Exception e) {ergebnis = e.getMessage();}
}
class Ware {
int warennummer; String bezeichnung; double preis; int anzahl;
}
}
Aufgabe: Erstelle für die Klasse Kunde und die Klasse Buch jeweils ein HTML-Eingabeformular, in das
ihre Attribute eingegeben werden können und jeweils ein Java-Servlet für Kunde und Buch, das die Eingaben empfängt und in Datenbanktabellen speichert.
2.5
Abfrage aus Datenbanktabelle mit SELECT
Für die umgekehrte Richtung erstellen wir ein Servlet, das die Daten aus der Tabelle holt und dem Benutzer im Browser zur Verfügung stellt:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
import java.sql.*;
public class ServletWHolen3 extends HttpServlet {
Ware w=new Ware();
String ergebnis="ok";
public void doPost(HttpServletRequest anfrage, HttpServletResponse antw)
throws ServletException, IOException {
holen();
antw.setContentType("text/html");
PrintWriter ausgabe = antw.getWriter();
antworten(ausgabe);
ausgabe.close();
}
public void holen() {
String url = "jdbc:mysql://localhost/usr_web10_1";
String user = "web10"; String psst = "jlfh872f";
String treiber = "org.gjt.mm.mysql.Driver";
Connection con = null; Statement s;
String abfrage="SELECT * FROM Ware";
try {
Class.forName(treiber);
con=DriverManager.getConnection(url,user,psst);
s=con.createStatement();
ResultSet resultat = s.executeQuery(abfrage);
while (resultat.next()) {
w.warennummer= resultat.getInt("warennummer");
w.bezeichnung=resultat.getString("bezeichnung");
w.preis=resultat.getDouble("preis");
w.anzahl=resultat.getInt("anzahl");
}
}
catch (Exception e) {ergebnis = e.getMessage();}
}
public void antworten(PrintWriter a) {
15
a.println("<HTML> <BODY> Eintrag:"+ergebnis+"<FONT SIZE = '7' COLOR =
'green'>");
a.println("Aus Datenbank:</FONT>");
a.println("<table>");
a.println("<tr><td>Nummer:</td><td>"+w.warennummer+"</td></tr>");
a.println("<tr><td>Bezeichnung:</td><td>"+w.bezeichnung+"</td></tr>");
a.println("<tr><td>Preis:</td><td>"+w.preis+"</td></tr>");
a.println("<tr><td>Anzahl:</td><td>"+w.anzahl+"</td></tr>");
a.println("</table>" );
a.println("</BODY> </HTML>");
}
class Ware {
int warennummer; String bezeichnung; double preis; int anzahl;
}
}
Aufgabe: Schreibe ein Java-Servlet, das die Daten aus der Datenbanktabelle Kunde bzw. Buch abfragt und
im Browser anzeigt.
Erstelle ein HTML-Eingabeformular, in das eine Kundennummer, eine Buchnummer und eine Anzahl eingegeben werden können und ein Java-Servlet, das die Eingabe empfängt und in der Datenbanktabelle Bestellung speichert.
Herunterladen