JSP / H2 Datenbank

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • JSP / H2 Datenbank

    Hallo zusammen

    Ich bin gerade daran ein JSP seite mit der H2 datenbank zu verbinden.

    Ich habe auf der JSP seite die buttons mit denen ich die sachen eintragen kann.

    z.B.

    id: 2
    name: Hans
    addr: bahnhofstrasse 3 zürich

    Drücke ich jetzt insert sollten die daten in die datenbank geschrieben werden

    Mein Problem:

    Wie ist der code dafür das es in die datenbank schreibt?
    Und wie funktioniert das bei den anderen buttons (create,drop,select,delete)?


    Ich hoffe Ihr könnt mir helfen ich wäre euch sehr dankbar

    Mit freundlichen grüssen zooyorker


    Quellcode

    1. <%@ page import="javax.sql.*" %>
    2. <h1>Adessverwaltung</h1>
    3. <form action="dbTest.jsp" method="post">
    4. id: <input type="text" name="id" size="20">
    5. name: <input type="text" name="name" size="20">
    6. addr: <input type="text" name="addr" size="20">
    7. <br />
    8. <input type="submit" name="action" value="create">
    9. <input type="submit" name="action" value="drop">
    10. <input type="submit" name="action" value="select">
    11. <input type="submit" name="action" value="insert">
    12. <input type="submit" name="action" value="delete">
    13. </form>
    14. <%
    15. String id = request.getParameter("id");
    16. String action = request.getParameter("action");
    17. double erg=0;
    18. if(action==null)
    19. {
    20. out.println("aufruf nok");
    21. return;
    22. }
    23. if(action.equals("create"))
    24. {
    25. out.println(create());
    26. }
    27. %>
    28. <%!
    29. String create()
    30. {
    31. String s="start ";
    32. Class.forName("org.h2.Driver");
    33. Connection c=DriverManager.getConnection("jdbc:h2:tcp://localhost/~/test","sa","");
    34. Statement s=c.createStatement();
    35. s.execute("create table adressen(id int, name varchar(200),addr varchar(200))");
    36. c.close();
    37. s+=" ...create aufgerufen";
    38. return s;
    39. }
    40. %>
    Alles anzeigen
  • welche schritte hast du denn schon so unternommen?
    jdbc treiber geladen?

    meinews.net/verbindung-t35298.html
    Using OpenOffice Base
    OpenOffice.org Base supports database access over the JDBC API. To
    connect to a H2 database using OpenOffice Base, you first need to add
    the JDBC driver to OpenOffice. The steps to connect to a H2 database are:
    * Stop OpenOffice, including the autostart
    * Copy h2.jar into the directory <OpenOffice>\program\classes
    * Start OpenOffice Base
    * Connect to an existing database, select JDBC, [Next]
    * Example datasource URL: jdbc:h2:c:/temp/test
    * JDBC driver class: org.h2.Driver
  • Verbindung zur Datenbank besteht und funktioniert

    Ich suche eigentlich den code
    wie man den button den ich schon erstellt habe

    z.B.
    <input type="submit" name="action" value="insert">

    button wird angezeigt auf jsp seite.
    wen ich diesen Button drücke passiert nichts.

    nun sollte sich beim drücken von insert die daten
    z.B.
    id: 2
    name: Hans
    addr: bahnhofstrasse 3 zürich

    in die H2 datenbank eingetragen werden wie ist der code dafür?
    und bei den andern Button das gleiche?
    grezz

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Zooyorker ()

  • Okey habe ich gemacht jetzt gibt es mir unter den Buttons die sachen aus:
    z.B. ich drücke delete unten steht dan delete

    also steht in Action immer das drin was ich drücke.

    wenn ich jetzt das hier mache:

    Quellcode

    1. <%
    2. String id = request.getParameter("id");
    3. String action = request.getParameter("action");
    4. double erg=0;
    5. if(action==null)
    6. {
    7. out.println("aufruf nok");
    8. return;
    9. }
    10. if(action.equals("create"))
    11. {
    12. out.println(create());
    13. }
    14. %>
    Alles anzeigen


    sollte es doch die sachen in die datenbank schrieben
    jedoch gibt es mir immer ein fehler aus und zwar diesen:

    org.apache.jasper.JasperException: Unable to compile class for JSP:

    An error occurred at line: 31 in the jsp file: /dbTest_mildner.jsp
    The method create() is undefined for the type dbTest_005fmildner_jsp
    28:
    29: if(action.equals("create"))
    30: {
    31: out.println(create());
    32: }
    33:
    34: %>
  • Oki... also erzähl mal n bisschen was über dich :)

    Nee quack. Aber über die Umgebung etc.
    Ich nehme an du benutzt den Tomcat als Applikationsserver?
    Du hast alle erforderlichen Biblotheken im classpath (wobei ich zugeben muss das ich nciht weiß welche erforderlich sind :) )

    Dann würde ich diesen ganzen Datenbankkram in ne Bean auslagern.

    Datenbank.java

    Quellcode

    1. // DEIN DATENBANKCODE + create() + delete etc...


    DieJsp.jsp

    Quellcode

    1. // JSP-Directive (glaube das hieß so, schau besser nochmal nach)
    2. // Sollte die Datenbankklasse in irgendwelchen packages sein, musst du diese mit angeben.
    3. // bsp: de.example.database.Datenbank
    4. <jsp:useBean id="db" class="Datenbank" />
    5. <%
    6. String id = request.getParameter("id");
    7. String action = request.getParameter("action");
    8. double erg=0;
    9. if(action==null)
    10. {
    11. out.println("aufruf nok");
    12. return;
    13. }
    14. if(action.equals("create"))
    15. {
    16. db.create(); // hier wird die Methode create aufgerufen. SIe befindet sich jetzt in der ausgelagerten Bean.
    17. }
    18. ...
    19. ...
    20. ...
    21. %>
    Alles anzeigen



    Dann solltest du das Problem hoffentlich nciht mehr haben...
  • sorry geht so auch nicht

    weist du wie man es macht wen ich dir fast keine vorlage gebe. Nur das nötigste?
    das wäre der Titel und die Buttons:

    Quellcode

    1. <%@ page import="javax.sql.*" %>
    2. <h1>Adessverwaltung</h1>
    3. <form action="dbTest_mildner.jsp" method="post">
    4. id: <input type="text" name="id" size="20">
    5. name: <input type="text" name="name" size="20">
    6. addr: <input type="text" name="addr" size="20">
    7. <br />
    8. <input type="submit" name="action" value="create">
    9. <input type="submit" name="action" value="drop">
    10. <input type="submit" name="action" value="select">
    11. <input type="submit" name="action" value="insert">
    12. <input type="submit" name="action" value="delete">
    13. </form>
    Alles anzeigen


    und so ist der Datenbank zugriff:

    Quellcode

    1. Class.forName("org.h2.Driver");
    2. Connection conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/~/test","sa","");


    könntest du mir zu dem Button insert den code erstellen?
    so das ich die daten eingeben kann und sie dann in der Datenbank abgelegt sind.
    so könnte ich dann wahrscheindlich die restlichen buttons selber machen
    wärst mir eine riesen Hilfe :)

    über mich da gibts viel zu erzählen.....
    also ich benütze eclipse und wie du schon gesagt hast Tomcat als Applikationsserver die datenbank ist klar das wäre H2
  • Meinst du nicht, du solltest dich etwas mehr damit auseinander setzen?
    Naja egal... ich mache dir hier schnell was aber es ist komplett untested, da ich es hier direkt im Forum schreibe.. kann halt auch passieren das etwas fehlt, musst du ausprobieren.

    DatabaseBean.java

    Quellcode

    1. // Hier müssen noch die ganzen Imports rein...
    2. public class DatabaseBean() {
    3. private Connection con = null;
    4. private Statement stmt = null;
    5. // Hier der Konstruktor, kannst ja noch was mit anstellen wenn du willst.
    6. public DatabaseBean() {
    7. }
    8. public Connection getConnection() {
    9. if(con != null)
    10. return con;
    11. else { // else könntest dir eig. auch sparen da er bei return sowie rausspringen würde, aber der Form halber...
    12. Class.forName("org.h2.Driver");
    13. return (DriverManager.getConnection("jdbc:h2:tcp://localhost/~/test","sa",""));
    14. }
    15. /**
    16. * Das Sichtbarkeitsattribut würde ich an deiner Stelle immer mit hinschreiben.
    17. * Hat in JSP sogar gesteigerten Wert. Aber das wirst du schon rausfinden :)
    18. * Hab beim SQL Befehl noch n PrimaryKey mit zugelegt... solltest du dir aufjedenfall angewöhnen. (Keys im allgemeinen)
    19. */
    20. public String create() {
    21. String s="start ";
    22. Class.forName("org.h2.Driver");
    23. Connection c=DriverManager.getConnection("jdbc:h2:tcp://localhost/~/test","sa","");
    24. Statement s=c.createStatement();
    25. s.execute("create table adressen(id int PRIMARY KEY, name varchar(200),addr varchar(200))");
    26. c.close();
    27. s+=" ...create aufgerufen";
    28. return s;
    29. }
    30. public String delete() {
    31. //Hier der nächste Code usw.
    32. }
    33. }
    Alles anzeigen


    Das war die Bean.. und nu die JSP-Seite

    Eingabe.jsp

    Quellcode

    1. <jsp:useBean id="db" class="DatabaseBean" />
    2. <%
    3. String id = request.getParameter("id");
    4. String name = request.getParameter("name");
    5. String adresse = request.getParameter("addr");
    6. String action = request.getParameter("action");
    7. if(action != null) {
    8. if(action.equals("create")) {
    9. out.println( db.create() );
    10. }
    11. }
    12. %>
    13. <h1>Adessverwaltung</h1>
    14. <form action="Eingabe.jsp" method="post">
    15. id: <input type="text" name="id" size="20">
    16. name: <input type="text" name="name" size="20">
    17. addr: <input type="text" name="addr" size="20">
    18. <br />
    19. <input type="submit" name="action" value="create">
    20. <input type="submit" name="action" value="drop">
    21. <input type="submit" name="action" value="select">
    22. <input type="submit" name="action" value="insert">
    23. <input type="submit" name="action" value="delete">
    24. </form>
    Alles anzeigen


    So viel erstmal dazu... dir fehlen natürlich noch n paar HTML Tags und so weiter.. aber das schaffst du selber.
    Ansonsten wenn dort eine Fehlermeldung erzeugt wird, probiers erstmal selber.
    Nur n paar Tipps:
    - Imports fehlen noch.
    - Exceptionhandling!! (Bei den ganzen Datenbankgeschichten, werden mit ziemlicher Sicherheits Exceptions geworfen. Solltest dir dieses ganze Exceptionzeug nicht geläufig sein, schau es dir besser an :)
    - Denk an den Classpath, da müssen ein paar Biblotheken rein (Grüß mir mal den Tomcat *hust*)

    So... viel Erfolg ;)

    Thimo