# netbeans - jsp Daten in Datenbank hinzufügen



## emmes (29. Okt 2020)

Hallo zusammen,

da auch ich gerne mal neues ausprobiere, kam ich auf die Idee mich mit der Thematik der Datenbankprogrammierung auseinanderzusetzen.
Hierfür benutze ich Netbeans IDE 8.0 und die DB wird über MYSQL verwaltet.

Nun zu meine Übung.
Ich hatte mir einen kleinen Webshop überlegt.

Der Shop verfügt über 2 Tabellen.
1. Kunde - mit Kundendaten;
2. Artikel - mit zu kaufenden Artikeln;

Das ganze soll auf einer HTML-Seite dargestellt werden.

Soweit so gut.
Beispielkunden wurden über SQL-Befehle angelegt.
Diese werden auch über folgenden Code an die Webpage übertragen:
Hinweis: Dies funktioniert.
Die Eigentliche Schwierigkeit folgt beim Hinzufügen von Artikeln.


[CODE lang="java" title="Kunde"]<%@page import="java.sql.*"%>
<% Class.forName("com.mysql.jdbc.Driver"); %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>

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

    </head>
    <body>
        <h1> Shopdatenbank  </h1>
        <h2> Kunden         </h2>
        <h2>                </h2>


        <%!

        public class Shop {
            String URL      = "jdbc:mysql://localhost:3306/shop";
            String USERNAME = "root";
            String PASSWORD = "test";

            Connection connection = null;
            PreparedStatement selectShops = null;
            ResultSet resultSet = null;

            public Shop()   {

            try {
                connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
                selectShops =connection.prepareStatement(
                "SELECT NAME, STRASSE, PLZ, ORT FROM shop.Kunde"
                                );
                }   catch (SQLException e)    {
                e.printStackTrace();
                                                        }
                                        }

            public ResultSet getShops() {

            try {

                            resultSet = selectShops.executeQuery();
                            }   catch (SQLException e)    {
                e.printStackTrace();
                                                   }
                            return resultSet;
                                                    }   
                                }

        %>
        <%

        Shop shop = new Shop();
        ResultSet shops = shop.getShops();

        %>

        <table border="1">

            <tbody>
                <tr>
                    <th>Name</th>
                    <th>Strasse</th>
                    <th>PLZ</th>
                    <th>Ort</th>
                </tr>

            <% while (shops.next ()) { %>
                <tr>
                    <td><%= shops.getString("NAME") %></td>
                    <td><%= shops.getString("STRASSE") %></td>
                    <td><%= shops.getInt("PLZ")%></td>
                    <td><%= shops.getString("ORT")%></td>

                </tr>
            </tbody>

        <%                                 }
                %>



                <%!

        public class Kunde {
            String URL      = "jdbc:mysql://localhost:3306/shop";
            String USERNAME = "root";
            String PASSWORD = "test";

            Connection connection = null;
            PreparedStatement selectShops = null;
            ResultSet resultSet = null;

            public Kunde()   {

            try {
                connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
                selectShops =connection.prepareStatement(
                "SELECT artikelname, preis, mwst FROM shop.artikel"
                                );
                }   catch (SQLException e)    {
                e.printStackTrace();
                                                        }
                                        }

            public ResultSet getKunden() {

            try {

                                resultSet = selectShops.executeQuery();
                            }   catch (SQLException e)    {
                e.printStackTrace();
                                                        }
                            return resultSet;
                                                    }   
                                }
        %>
        <%

        Kunde kunde = new Kunde();
        ResultSet Kunden = kunde.getKunden();

        %>


        <table border="1">
            <thead>
                <h1>            </h1>
                <h2> Artikel    </h2>
                <h2>            </h2>

            </thead>
            <tbody>
                <tr>
                    <th>Artikel</th>
                    <th>Preis</th>
                    <th>MwSt</th>
                    <th>


                        <a href="artikel.jsp">( + )</a>

                    </th>

                </tr>

            <% while (shops.next ()) { %>
                <tr>
                    <td><%= shops.getString("artikelname") %></td>
                    <td><%= shops.getString("preis") %></td>
                    <td><%= shops.getString("mwst")%></td>


                </tr>
            </tbody>

        <%                                 }
                %>


    </body>
</html>[/CODE]

Die Kundendaten werden angezeigt.
Die Tabelle zum Hinzufügen der Artikel ist außerdem vorhanden.
Folgend der Code für die Artikel und zum eigentlichen Problem.


```
<%@page import="java.sql.*"%>
<% Class.forName("com.mysql.jdbc.Driver"); %>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Artikel einfügen</title>
    </head>
    <body>
        <h1>Hier können Sie Artikel zur Datenbank hinzufügen</h1>
        <%!
        
        public class Shop {
            String URL      = "jdbc:mysql://localhost:3306/shop";
            String USERNAME = "root";
            String PASSWORD = "test";
        
            Connection connection = null;
            PreparedStatement insertShops = null;
            ResultSet resultSet = null;
            
            public Shop()   {
                
            try {
                connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
                                
                insertShops = connection.prepareStatement(
                "INSERT INTO artikel (artikelname, preis, mwst)"
                                +  "VALUES (?,?,?)");
                                
                                
                }   catch (SQLException e)    {
                e.printStackTrace();
                            }
                        }
                        
                        public int setShops (String art, String pre, String mw)
                        {
                            int result = 0;
                            
                            try {
                                insertShops.setString(1, art);
                                insertShops.setString(2, pre);
                                insertShops.setString(3, mw);
                                result = insertShops.executeUpdate();
                            }
                            catch (SQLException e) {
                                e.printStackTrace();
                            }
                    
                            return result;
                                }
        }
      
        %>
        
        <%


            int result = 0;
          
            String artikelname  =       new String();
            String preis    =           new String();
            String mwst     =           new String();
            
            if (request.getParameter("art") != null) {
                artikelname = request.getParameter("art");
            }
            if (request.getParameter("pre") != null) {
                preis = request.getParameter("pre");
            }
            
            if (request.getParameter("mw") != null) {
                mwst = request.getParameter("mw");
            }
            
            Shop shop = new Shop();
            result = shop.setShops(artikelname, preis, mwst);
            
        %>
 
        <form name="form1" action="artikel.jsp" method="POST">
        
        
        
        <table border="0">
            
            <tbody>
                <tr>
                    <td>Artikelname: </td>
                    <td><input type="text" name="artikelname" value="" size="60" /></td>
                </tr>
                <tr>
                    <td>Preis: </td>
                    <td><input type="text" name="preis" value="" size="20" /></td>
                </tr>
                <tr>
                    <td>Mehrwertsteuer:</td>
                    <td><input type="text" name="mwst" value="" size="20" /></td>
                </tr>
            </tbody>
        </table>
        
        <input type="reset" value="Löschen" name="clear" />
        <input type="submit" value="Speichern" name="save" />
        
        
        </form>
    </body>
</html>
```


Das Einzige was der Datenbank hinzugefügt wird, ist ein leerer Eintrag. Die ID wird dank "auto_increment" erhöht.
Habe ich einen Gedankenfehler in der zeitlichen Abfolge?
Für einen Tipp wäre ich wirklich sehr dankbar.


----------



## fhoffmann (29. Okt 2020)

Wenn dein input-Feld den Namen "artikelname" hat, heißt auch dein Parameter so.
Du musst also abfragen `request.getParameter("artikelname");`


----------



## emmes (30. Okt 2020)

Ich weiß wie du es meinst, Danke für den Tipp.
Durch das ganze Namen-Wirrwarr ist mir der Überblick verloren gegangen.
Ich habe einiges umbenannt.

Außerdem ist mir aufgefallen, dass ich in der Weiterleitung der "Form" einen Fehler hatte.


----------

