Datenbankverbindung mit JSP herstellen

Hallo zusammen,

ich versuche mich gerade an einem Versuch eine Datenbankverbindung herzustellen.
Die Idee ist die Datenbank für ein kleines Forum zu verwenden.

Ich versuche die Datenbankverbindung in der index.jsp Datei herzustellen.
Ich habe einige Tutorials dazu gelesen, aber der Zugriff will bei mir einfach nicht funktionieren.

Wenn ich die index.jsp starte, erhalte ich nur die Tabelle aber kein Daten aus der Datenbank.

------------------------

Mein Versuch:
Code:
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>

<html>
    <%@page import="com.sun.xml.rpc.processor.modeler.j2ee.xml.string"%>
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@ page import="java.util.*" %>
    <%@ page import="javax.sql.*;" %>
    <!DOCTYPE html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Forum</title>
    </head>
      
<body>

<%-- Datenbanktreiber laden --%>

<private String driver="org.apache.derby.jdbc.ClientDriver";></private>
<Class.forName(driver).newInstance();>
                         
<%-- Connection-Objekt erzeugen --%>

<private Connection connect = null;></private>

<private String dbName ="C:/netbeans/.netbeans-derby/forum";></private>
<private String connectionURL="jdbc:derby://localhost:1527/" + dbName + ";create=true";></private>

<connect=DriverManager.getConnection(connectionURL);>
  

<PreparedStatement statement = connect .
    .prepareStatement("Select * from forum");>
<Resultset rs = statement.execute Query();>

<h1> Kleines Forum </h1>

<table border="1" width="100%">
<tr>
   <th>Titel des Beitrags</th>
   <th>geschrieben von</th>
   <th>geschrieben am</th>
</tr>

<while(rs.next()){
String Titel = rs.getString("titel");
System.out.println(titel);
}>


<tr>
   <td><String Titel = rs.getString("Titel")></td>
</tr>

</table>

</body>
</html>

--------------

Was stimmt hier nicht, weshalb ich kein Ausgabe bekomme?


Danke für eure Hilfe.

Gruß
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

also die Datenbank liegt bei mir local.
Und in der Datenbank ist eine Tabelle aus dem die Daten gelesen werden soll.

Unter dem Pfad C:/netbeans/.netbeans-derby/forum liegt die Datenbank:

Daher habe ich:
<private String dbName ="C:/netbeans/.netbeans-derby/forum";></private>
<private String connectionURL="jdbc:derby://localhost:1527/" + dbName + ";create=true";></private>
 
Tja, dann würde ich mal anfangen zu debuggen. Was steht denn in connect ? Normalerweise solltest du auch eine Meldung bekommen, dass Du SQLException abfangen sollst. Machst du das?
 
Scriptlets bindet man doch folgendermaßen in eine JSP ein

<%
String[] valueArray = {"This", "is", "a", "rather", "dull", "example"};
int i;
for (i = 0; i < valueArray.length; i++) {
%>

So wie du es gemacht hast sollte dein Code einfach nur als fehlerhaftes html interpretiert werden und daher erzeugt er auch keine Ausgabe.
 
Hallo,

danke für die Antworten.

Ich habe nochmal etwas versucht, aber leider immer noch keine Ausgabe.

Code:
<%@page import="java.sql.PreparedStatement"%>
    <%@page import="java.sql.Connection"%>
    <%@page import="java.sql.DriverManager"%>
    <%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
    <%@page import="com.sun.xml.rpc.processor.modeler.j2ee.xml.string"%>
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@page import="java.util.*"%>
    <%@page import="javax.sql.*;"%>

<html>
    <head>
      
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Forum</title>
    </head>
      
<body>
    <table border="1">
  

  
<%-- Datenbanktreiber laden --%>
<%
String driver="org.apache.derby.jdbc.ClientDriver";
Class.forName(driver).newInstance();
          
java.sql.Connection connect = null;
String dbName = "C:/Users/admin/.netbeans-derby/forum";
String connectionURL="jdbc:derby://localhost:1527/" + dbName + ";create=true";

connect = DriverManager.getConnection(connectionURL);

java.sql.PreparedStatement pst; 
java.sql.Statement statement;
java.sql.ResultSet rs;

pst = null;
statement = null;
rs = null;

String sql = "SELECT titel from forum";

statement = connect.createStatement();
rs = statement.executeQuery(sql);

%>

<h1> Kleines Forum </h1>


<tr>
   <th>Titel des Beitrags</th>
   <th>geschrieben von</th>
   <th>geschrieben am</th>
</tr>

<%
while(rs.next()){
String Titel = rs.getString("titel");
System.out.println(Titel);
}

%>

<tr>
   <td><%-- String Titel = rs.getString("Titel"); --%></td>
   <td><%-- System.out.println("titel"); --%></td>
</tr>

</table>

</body>
</html>
 
Zuletzt bearbeitet von einem Moderator:
Als nächstes habe ich mir gedacht,

das Wenn man auf den Titel des Beitrags klickt die ID des Beitrags in der Datenbank per Parameter an eine andere JSP Datei zum lesen übergeben werden soll:

Bin ich hier auf dem richten Weg ?:

in der index.jsp:

<td><a href ="beitrag-lesen.jsp?value=<%= rs.getInt("id")%>"><%= rs.getString("titel") %></a> </td>

in der beitrag-lesen.jsp
habe ich zum Test ob der Parameter übergeben wird diesen nur mal ausgeben wollen mit:

<tr>
<td><%= request.getParameter("id") %></td>
</tr>

hier wird null ausgegeben.

Das heißt wohl entweder funktioniert die Übergabe nicht so wie ich das denke oder die übernahme nicht ?

Danke.
 
Hallo zusammen,

ich bin schon etwas weiter gekommen:

Mein Problem ist nun:

Ich habe eine Form erstellt und die Form übergibt die Parameter zu beitrag-speichern.jsp , das funktioniert soweit auch.
Nur wie schreibe ich die Daten in die Datenbank ?
Ich erhalte immer einen Fehler und ich kann z.B. auch nicht Vorname Nachname mit Leerzeichen übernehmen.

Der Code:

beitrag-erstellen.jsp mit der Form:

Code:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Beitrag erstellen</title>
    </head>
    <body>
      
        <h1> Beitrag erstellen </h1>
      
<form action="beitrag-speichern.jsp" method="POST">
<table>
    <tr>
        <td> <label for="pname">Name</label> </td>
        <td> <input type="text" id="name" name="pname" /> </td>
    </tr> 
  
   <tr>
       <td> <label for="pemail">Email</label> </td>
       <td> <input type="text" id="email" name="pemail" /> </td>
   </tr>
  
   <tr>
       <td> <label for="ptitel">Titel des Beitrags</label> </td>
       <td> <input type="text" id="titel" name="ptitel" /> </td>
   </tr>
      
   <tr>
       <td> <label for="pbeitrag">Beitrag</label> </td>
       <td> <textarea name="pbeitrag" id="beitrag" class="sendForm">
       </textarea> </td>
   </tr>
  

  
   <td> <input type="submit" value="speichern" /> </a>
   </td>

</table>

</form>
      
      
        <hr>
      
        <a href ="index.jsp">Übersicht</a>
    </body>
</html>
--------------------------------------------------
Beitrag-speichern.jsp
Code:
<%@page import="java.sql.DriverManager"%>
<%@page import="java.lang.String"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Beitrag speichern</title>
    </head>
    <body>
      
        <h1>Ihr Beitrag wurde gespeichert:</h1>
        <table>     
        <tr>
            <td> Ihr Beitrag: </td>
        </tr>
        <tr>
            <td>Name:    <%= request.getParameter("pname") %></td>
        </tr>
        <tr>
            <td>Email:   <%= request.getParameter("pemail") %></td>
        </tr>
        <tr>
            <td>Titel:   <%= request.getParameter("ptitel") %></td>
        </tr>
        <tr>
            <td>Beitrag: <%= request.getParameter("pbeitrag") %></td>
        </tr>
     </table> 
      
        <%
            java.sql.PreparedStatement pst; 
            java.sql.Statement statement;
            java.sql.ResultSet rs;

            pst = null;
            statement = null;
            rs = null;
          
            String pname=request.getParameter("pname");
            String pemail=request.getParameter("pemail");
            String ptitel=request.getParameter("ptitel");
            String pinhalt=request.getParameter("pbeitrag");
              
          
            String driver="org.apache.derby.jdbc.ClientDriver";
            Class.forName(driver).newInstance();
          
            java.sql.Connection connect = null;
            String dbName = "C:/Users/name/.netbeans-derby/forum";
            String connectionURL="jdbc:derby://localhost:1527/" + dbName + ";create=true";

            connect = DriverManager.getConnection(connectionURL);


            statement = connect.createStatement();
            String sql = "INSERT INTO forum (name) VALUES (" + pname + ")";
            statement.executeUpdate(sql);
          
          
            %>


-----

Danke.
 
Zuletzt bearbeitet von einem Moderator:
Wenn ich dir noch einen Tipp geben darf:
Schau dir mal das MVC-Pattern an. Du mischst Dinge, die einfach nicht zusammengehören und für eine saubere Struktur unbedingt getrennt werden sollten.
Der Verbindungsaufbau mit der Datenbank hat nichts mit der Darstellung des Formulars zu tun.

Im einfachsten Fall hättest du eine Klasse, die sich _nur_ um die Datenbankzugriffe kümmert, (Model) eine .jsp-Datei (View) und eine Klasse, welche zwischen den beiden vermittelt (Controller).
 
Hallo,

wenn ich
Code:
 String sql = "INSERT INTO forum (name) VALUES ('" + pname + "' )";
eingebe erhalte ich:

javax.servlet.ServletException: java.sql.SQLIntegrityConstraintViolationException: Die Spalte 'ID' akzeptiert keinen Nullwert.

Was aber wohl klar ist da ich keine Wert mit angegeben habe, dann muss ich jetzt noch raus finden wie ich den Wert um eins erhöhe im SQL.

Das MVC muss ich mir mal anschauen was das ist.
 
Zuletzt bearbeitet:

Zurück
Oben