JSP/Servlet -> Einzelne Zeilen aus DB in Formular darstel

Status
Nicht offen für weitere Antworten.

sop

Mitglied
Hallo zusammen!
Ich programmiere eine kleine Webanwendung (JSP, Servlet) mit Datenbankanbindung (MySQL). Es wird eine CSV-Datei ausgelesen und bestimmte Werte werden in die DB geschrieben. Dazu kann man sich natürlich die Werte auch anschauen und verändern.

Ich lese nun die Datenbankeinträge aus und stelle diese in einer Tabelle dar. Weiterhin habe ich bereits hinter jede Zeile einen Druckknopf (Button) eingebaut. Dieser soll dafür sorgen das die besagt Zeile aus der DB ausgelesen wird und in ein Formular (zur Korrektur, Nachtrag, etc.) eingetragen wird.

Feststellung (richtig oder falsch?):
- Ich verweise über den Druckknopf auf dieses Formular (Beispiel: formular.jsp)
- Die formular.jsp liest den Datenbankeintrag aus und füllt die integrierten Formularfelder mit den Datensätzen aus.
- Man kann über formular.jsp die Daten danach ändern, löschen, etc. und erneut abspeichern.

Probleme:
1. Wie bekomme ich die Druckknöpfe derart programmiert, dass jeder Knopf genau weiß, welcher DB-Eintrag gemeint ist und wie verweise ich auf formular.jsp?
Ich dachte daran den Wert des Druckknopfes automatisch mit dem Wert des Primärschlüssel´s zu belegen. Wenn VALUE='1' -> dann auch DB-Eintrag='1'. Frage: Wie implementiere ich das am besten?

2. Gibt es allgemeine Lösungen zu diesem Problem? Es handelt sich ja um einen Fall, den jeder von uns kennt. Hinter einem bestimmten Datensatz hat man die Möglichkeit die Einträge z.B. zu ändern, löschen, ...


Schönen Gruß
Sascha
 
S

SlaterB

Gast
tja, ich würde mir da zunächst nicht allzu viele Gedanken machen,

so ein Button erzeugt einen Request a la
/edit?id=17
anhand dieser Id wird der Datensatz bestimmt
(aus DB oder Cache, auf jeden Fall eher eine Aufgabe für ein Servlet als eine JSP)
und aus diesen Daten das Formular aufgebaut

komplizierter kann man es machen wenn es mal nötig wird..
 

sop

Mitglied
OK!

Gute Idee!
Wie bekomme ich es nun hin mit dieser ID den genaue Datensatz der DB auszulesen?

Mein Problem ist, dass alle Buttons die selbe ID in der URL entwickeln.
Kann ich definierte ID´s generieren?

Gruß
Sascha
 
S

SlaterB

Gast
dynamische URLs sind für Buttons mit dynamsicher Bedeutung natürlich unerläßlich ;)

in JSPs gibt sicherlich viele Schreibweisen,
Button selber kann man ja auch verschieden umsetzen,

aber wenn du eine Zeile pro Datensatz hast, dann wirst du doch irgendwo bei der HTML-Generierung sowas wie eine Schleife und eine Variable für den aktuellen Datensatz haben

dann
<butten href=edit?id=${data.id}>

oder irgendwie sowas in der Art,
wie erzeugst du denn die Anzeige in der Tabelle?
 

sop

Mitglied
OK!


So erzeuge ich die Tabelle:

Code:
     out.println( "<table><tr>" );
      for( int i=1; i<=n; i++ )    // Achtung: erste Spalte mit 1 statt 0
        out.println( "<th>" + rsmd.getColumnName( i ) + "</th>" );
      while( rs.next() )
      {
        out.println( "</tr><tr>" );
        for( int i=1; i<=n; i++ )  // Achtung: erste Spalte mit 1 statt 0
          
          out.println( "<td>"  + rs.getString(i) + "</td>");
          //Erzeugt Button "Ändern" am Ende der Zeile
          out.println( "<td>"  + "<form><input type='submit' name='submit' value='Ändern'></form>" + "</td>");
          //Erzeugt Button "Löschen" am Ende der Zeile hinter "Ändern"
          out.println( "<td>"  + "<form ><input type='submit' name='submit' value='Löschen'></form>" + "</td>");
      }
      
      out.println( "</tr></table></form>" );

Die Button´s sollten jetzt natürlich eine eindeutige ID bekommen. In der Datenbank habe ich einen Wert "id" als Primärschlüssel deklariert; kann man diesen nicht idealerweise nutzen?

thx
Sascha
 
S

SlaterB

Gast
jo den solltest du wirklich nutzen, bisher ist dein Formular ja ganz leer,
da ist doch noch nicht mal die Ziel-JSP angegeben oder wo steht die?

Code:
          int id = // id holen

          out.println( "<td>"  + "<form>"+
              +"<input type='hidden' name='id' value='"+id+"'>"
              +"<input type='submit' name='submit' value='Ändern'></form>" + "</td>");

http://de.selfhtml.org/html/formulare/definieren.htm
 

sop

Mitglied
Richtig - ich habe noch keine Zielseite angegeben, weil ich dauernd Kompilierungsprobleme hatte, wenn ich

Code:
<form action="Ziel.jsp"> [code]

eingebe. Prüfe ich jetzt mal. 

Vorerst danke und bis gleich ;-)

Sascha
 

sop

Mitglied
:D et funzt - thx to SlaterB.

Bin jetzt soweit, dass ich die den Button über die eindeutige ID (aus Datenbank) identifizieren kann. Es wird also

beispiel.jsp?id=396&submit=%C4ndern

in der URL angezeigt.

Weitere Fragen folgen!!!

Gruß
Sascha
 

sop

Mitglied
HI!

Neues Übel. Ich stehe jetzt davor die Anweisung für das Auslesen der Datenbank in das Formular von ziel.jsp umzusetzen.
Ich bin also mit der richtigen ID auf die ziel.jsp gelangt. Wie kann ich nun am besten die Anweisung umsetzen. Ich habe an ein request gedacht, da ja ein <form> im Spiel ist. Nur hab ich keine gute Idee.

Sascha
 
S

SlaterB

Gast
'die Anweisung' klingt so abstrakt,
was ist das Problem?

aus der DB die Daten holen, mit einer Anweisung 'get Daten zu Id id',
und dann Daten anzeigen
 
G

Guest

Gast
Mit Anweisung meinte ich eine if-Anweisung, mit der ich in der ziel.jsp prüfe, ob ein Button ausgelöst wurde.

Dann würde ich den übergebenen Wert des Buttons ermitteln (wie weiß ich leider noch nicht) und die ID auslesen, damit ich mit diesem Wert dann den Datensatz aus der Datenbank bestimmen kann. Kommt das so hin?
Hatte leider keine wirkliche Lösung!

Wie meintest du das mit der Funktion getDaten() ? Wie und wo kann ich diese einbauen bzw. welche Übergabeparameter muss ich nehmen?
 
S

SlaterB

Gast
nun, Request-Parameter auszulesen ist ja wohl eines der wichtigsten Dinge überhaupt,
um mit dem User zu interagieren ;)

in der JSP ist das immer ein Krampf, daher interessiert es mich gar nicht wie es da geht,
der richtige Platz ist ein Servlet,
dort
int id = Integer.parseInt(request.getParameter("id"));

und getDaten war abstrakt gemeint,
also eine DB-Anfrage "select * from .. where id = "+id
oder so in der Art, as sollte ja nun nicht mehr die Schwierigkeit darstellen wenn die Id da ist
 

sop

Mitglied
Verstehe!

Alles im Servlet verarbeiten und dann das Ergebnis an die JSP senden. Right?!

Mach ich jetzt !

THX-Sascha
 

sop

Mitglied
Habe ein unverständliches Problem. Die Fehlermeldung lautet:

Fehler in SQL: java.sql.SQLException: Before start of result set

Diese entsteht durch folgenden Code:
Code:
    	  try 
          {
              Class.forName("org.gjt.mm.mysql.Driver");
              String url = "jdbc:mysql://localhost:3306/prepaid";
              Connection con = DriverManager.getConnection(url,"root", "mpt*sven");
              Statement stmt = con.createStatement();
              ResultSet rs  = stmt.executeQuery("SELECT nachname FROM kunde WHERE id = '"+id+"'");
              
              int column = rs.findColumn("nachname");  // result = 1
              String name = rs.getString("nachname");

              System.out.println(row);
              System.out.println(column);
              System.out.println(name);


Ich weiß nicht weiter. Der Datensatz wird ausgelesen, kann aber nicht mit getString() angezeigt werden.

Woran kann das liegen ?
 
S

SlaterB

Gast
hast du denn noch nie ein Statement ausgeführt?
dort kann man doch dann abgucken..

bevor im ResultSet ein Datensatz zugreifbar ist musst du erstmal mit rs.next() einen laden,
damit kannst du gleich prüfen, ob überhaupt einer da ist
 

sop

Mitglied
Ich wußte nicht das .next() so wichtig für die Abfrage ist. Habe noch viel zu lernen ;-)

Schönen Gruß und vielen Dank für die schnelle Hilfe
 

sop

Mitglied
Ich habe es jetzt geschafft, den Datensatz aus der bestimmten / gewollten Zeile in die Formularfelder einzutragen.

Nun sollten die Daten ge�ndert werden k�nnen. Nach der �nderung wird abgespeichert (Submit) und der modifizierte Eintrag sollte in der Datenbank angezeigt werden.

Jetzt die Frage:

Kann ich das mit einem UPDATE-Befehl l�sen oder muss ich eine Query schreiben und sp�ter mit updateString() - updateRow() - usw... arbeiten?

Zur besseren Vorstellung:

Die Formulareintr�ge werden per POST-Methode an das Servlet �bergeben. Im Servlet sollen also die Modifikationen gemacht werden.

Was k�nnte ich da am besten machen??? :shock:
 

sop

Mitglied
DAS WAR EINE BL�DE FRAGE - ICH WEI�! ES GIBT ALSO DOCH "BL�DE FRAGEN"

Ich versuch wirklich selber auf die L�sung zu kommen, jedoch dauert es manchmal etwas l�nger.

Ankommende Parameter mit request() einfangen:
Code:
String id			      = request.getParameter("id");
String rechnungsnummer     = request.getParameter("rechnungsnummer");
String vorname 		         = request.getParameter("vorname");

Dann diese Parameter benutzen, um die Update()-Funktion durchzuf�hren.

Wichtig: PreparedStatement verwenden

Code:
try 
          {
              Class.forName("org.gjt.mm.mysql.Driver");
              String url = "jdbc:mysql://localhost:3306/prepaid";
              Connection con = DriverManager.getConnection(url,"root", "mpt*sven");
              

              PreparedStatement ps = con.prepareStatement("" +
              		"UPDATE kunde " +
              		"SET rechnungsnummer = '"+rechnungsnummer+"', vorname = '"+vorname+"'," +
              		"WHERE id = '"+id+"';"); 
  
              ps.executeUpdate();
             
             con.close();
            }
 

sop

Mitglied
Ich brauche Hilfe im Bezug auf das Filtern von Datenbankabfragen.

Zur Zeit denke ich das ich eine IF-Anweisung benutze, um es zu realisieren. Hier die Source:

Code:
sRechNr 	= request.getParameter("RechNr");
sNachname    = request.getParameter("Nach");
sPlz		   = request.getParameter("Plz");
    
    try {
      Class.forName( sDbDrv );
      cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
      st = cn.createStatement();
          
      if(sRechNr != "")
      {
      	  rs = st.executeQuery("Select * from kunde where rechnungsnummer = '"+sRechNr+"' ;");
      }      
      if (sNachname != "")
      {
	  rs = st.executeQuery("Select * from kunde where nachname = '"+sNachname+"' ;"); 
      }
      if (sPlz != "")
      {
      	  rs = st.executeQuery("Select * from kunde where plz = '"+sPlz+"' ;");
      }
      else
      {
      	  rs = st.executeQuery("Select * from kunde;");
      }

Sprich, ich überschreibe den Wert für das ResultSet, indem ich prüfe, ob es in den Feldern Daten gibt. Ist keine sonderlich gute Sache.

Wie kann ich es besser machen bzw. was ist die normale Vorgehensweise ?
 
S

SlaterB

Gast
keine Ahnung..,
wie wärs denn wu erstmal beschreibst WAS passieren soll?!

die einzige gegebene Information ist 'Filtern von Datenbankabfragen',
da verstehe ich persönlich nur Bahnhof

"ich mache irgendwas, aber meine Umsetztung geht nicht, wie gehts besser?"
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Jakarta Servlet API 5.0 Allgemeines EE 1
pkm Frage wegen AJAX-Zugriff auf ein Servlet Allgemeines EE 1
Dimax Servlet Servlet Kommunikation Allgemeines EE 18
K Unterschied zwischen JSP & Servlet gegenüber REST mittels JAX-RS Allgemeines EE 1
Dimax Servlet läuft in Eclipse, aber nicht im Browser Allgemeines EE 74
M URL Servlet Request getParameter Allgemeines EE 2
M Servlet Methoden Aufruf im Servlet Allgemeines EE 10
J 404 Not found (Servlet) Allgemeines EE 1
J Asynchrones Servlet löst NullPointerException aus Allgemeines EE 5
E Servlet Servlet das richtige? Allgemeines EE 11
B HTTP-Header-Inspektor-Servlet Allgemeines EE 1
N JSP Servlet mit JSP ansprechen Allgemeines EE 2
F Mehrere Bilder aus MySQL DB via Servlet darstellen. Allgemeines EE 1
J FTP und Servlet Allgemeines EE 11
H Post an Servlet Allgemeines EE 2
A Binärdatei vom Servlet erzeugen lassen Allgemeines EE 3
S Servlet Authentication Filter Allgemeines EE 0
S LDAP JAAS oder Servlet Allgemeines EE 0
G Problem: Servlet in JSP einbinden mit <jsp:include> Allgemeines EE 3
F eigene Anwendung per Servlet Container starten Allgemeines EE 9
F Servlet Daten im Speicher ablegen Allgemeines EE 3
L Servlet ClassNotFoundException Servlet Allgemeines EE 3
G Allgemeine Frage zu Authentifizierung mittels Servlet API Allgemeines EE 2
J Servlet "package does not exist" Allgemeines EE 5
K Servlet-Mapping Allgemeines EE 9
0 Servlet mit ArrayList Allgemeines EE 3
E Servlet unter mehreren Adressen Allgemeines EE 16
S Pfad-Zugriff über Servlet-init() Allgemeines EE 2
E Servlet Wie kann ich ohne Hilfe von Eclipse in JBoss mein servlet aufrufen Allgemeines EE 2
S Servlet.service() threw exception Allgemeines EE 4
A Servlet erkennt request Objekt nicht Allgemeines EE 8
G Direkter Zugriff auf Servlet- doPost Allgemeines EE 15
G Servlet doGet, doPost Allgemeines EE 3
A Kodierungsproblem bei Parameterübergabe von Browser an Servlet (GET) Allgemeines EE 2
Antoras servlet-mapping auf dynamische URLs Allgemeines EE 17
0 Problem mit librarys javax.servlet.http.HttpServletRequest cannot be resolved Allgemeines EE 1
MQue Ajax - Servlet Allgemeines EE 2
MQue Servlet Allgemeines EE 9
S [Design] Dynamischer EJB Aufruf von Servlet Allgemeines EE 3
S Servlet auf JBoss 5? Allgemeines EE 11
B HttpSession bekommen wenn nicht in Servlet Allgemeines EE 8
MQue Servlet / Button Allgemeines EE 5
S In Eclipse werden die "Servlet-Klassen" nicht gefu Allgemeines EE 2
U javax.faces und javax.servlet cannot be resolved Allgemeines EE 2
W Potentielles Memory Leak bei Servlet Allgemeines EE 6
B unterschied servlet und bean Allgemeines EE 2
Escorter Servlet .sar und jede Menge .jar Archive Allgemeines EE 2
N Servlet und JSF (URL-Rewriting)? Allgemeines EE 3
A jsf: Servlet aufrufen, wie geht das? web.xml Fehler? Allgemeines EE 13
N Servlet zyklisch aktualisieren Allgemeines EE 2
zilti Verbindung Applet <-> Servlet Allgemeines EE 5
ARadauer Servlet Bild Rückgabe Allgemeines EE 2
I Über Formular Daten zu Servlet Allgemeines EE 36
H Servlet - Zwischenmeldung anzeigen bei längerer Berechnung Allgemeines EE 2
G Ordner mit Umlauten einlesen - Servlet Allgemeines EE 3
A web.xml für Servlet in Tomcat 5.5 erstellen Allgemeines EE 2
M Zwei Buttons in einem Servlet Allgemeines EE 2
M Servlet lässt sich nicht aufrufen Allgemeines EE 6
A web.xml für Servlet in Tomcat erstellen Allgemeines EE 6
B Servlet Allgemeines EE 3
G EJB - EJB wird nicht ins Servlet geladen Allgemeines EE 3
K load-on-startup -> in der Servlet Klasse Allgemeines EE 6
G Objekt an Servlet übergeben - oder Objekt global definieren? Allgemeines EE 4
W Was bei Servlet-Entwicklung alles beachten? Allgemeines EE 8
R Zugriff auf Filter Servlet Allgemeines EE 10
I JBOSS Jsp Files Pfad im Servlet? Allgemeines EE 4
N Servlet-Request abbrechen? Allgemeines EE 3
D Java Servlet mit Radio Buttons Allgemeines EE 2
G Servlet debugging Allgemeines EE 8
N Thread von Servlet aus starten Allgemeines EE 16
N JSP: Collection im Servlet überwachen (mit AJAX)? Allgemeines EE 5
J Socket daten darstellen per jsp,servlet Allgemeines EE 2
W servlet über https Allgemeines EE 2
L Servlet kann Funktion nicht aufrufen Allgemeines EE 3
B Parameterübergane von Servlet an JSP funktioniert nicht ? Allgemeines EE 2
M Aus einem Servlet auf ein anderes zugreifen ? Allgemeines EE 2
G Servlet Serializable Allgemeines EE 2
B Servlet-Api.jar auf JBoss? (Migration von Tomcat zu JBoss) Allgemeines EE 4
H Servlet - Importieren von Code Allgemeines EE 2
P Java Servlet - Umgang mit Verlinkungen Allgemeines EE 7
M Wert aus Servlet an normale Klasse übergeben Allgemeines EE 2
E Servlet soll JFRame öffnen. Jframe.setvisible schlägtfehl Allgemeines EE 2
M servlet --> jsp - problem beim umstrukturieren Allgemeines EE 5
D Servlet Problem über Server Allgemeines EE 26
K Servlet per Formular aufrufen Allgemeines EE 8
L sessions mit servlet oder jsp ? Allgemeines EE 9
B JSF - Servlet mit Parametern über einen Link öffnen Allgemeines EE 3
D Binärdaten im Servlet entgegen nehmen, aber wie? Allgemeines EE 5
T Servlet-Instanzen und ServletContext Allgemeines EE 2
L speichern von daten mittels servlet in xml Allgemeines EE 8
N Collection überwachen (Servlet + AJAX) Allgemeines EE 3
N Liste mit Checkboxen an Servlet übergeben? Allgemeines EE 3
T Wie Datenbank und Servlet koppeln? Allgemeines EE 3
G Ladeseite anzeigen lassen während das Servlet noch arbeitet? Allgemeines EE 6
P Tomcat Servlet POST Daten als Array Allgemeines EE 2
P PDF per Servlet übertragen, danach keinen Inhalt mehr Allgemeines EE 12
N JSP kann Servlet nicht aufrufen! :-( Allgemeines EE 2
J Servlet Parameter aus web.xml übergeben, wie zugreifen? Allgemeines EE 2
L servlet.jar ? Allgemeines EE 2
K Servlet: Respone.redirect mit POST-Parametern Allgemeines EE 5

Ähnliche Java Themen

Neue Themen


Oben