Avatar billede mads375 Juniormester
03. februar 2014 - 15:43 Der er 24 kommentarer og
1 løsning

indsætter data til mysql database

Hejsa

Jeg har fået connected til min MySQL database, og jeg vil gerne nu prøve at indsætte noget data. Jeg har lavet følgende columns i databasen:
user_id
user_email
user_password

Jeg er begyndt at prøve at lave noget, men er ikke helt med på hvad jeg mangler. Min kode ser således ud:

<%@page
import="jsp.*"
import="java.sql.*"
%>
<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Insert title here</title>
</head>
<body>
    <%
        Connection c = MySQL.connect();
        out.print(c);
        MySQL.close(c);
    %>
    <%
        String user_id = request.getParameter("user_id");
        String user_email = request.getParameter("user_email");
        String user_password = request.getParameter("user_password");
       
        if(user_id != null && user_email != null &&
          user_password != null) {
            com.zetcode.MySQL.Insert(user_id, user_email, user_password);
        }
    %>
    <br><br><br>
   
    <form method="post" action="index.jsp">
        <table>
            <tr>
                <td>UserID</td><td><input type="text" name="user_id"></td>
            </tr>
            <tr>
                <td>Email</td><td><input type="text" name="user_email"></td>
            </tr>
            <tr>
                <td>Password</td><td><input type="text" name="user_password"></td>
            </tr>
        </table>
        <br>
        <input type="submit" value="submit">
    </form>


</body>
</html>

Er jeg helt galt på den eller?

mvh Mads
Avatar billede arne_v Ekspert
03. februar 2014 - 16:01 #1
Afhaenger jo lidt af hvad:

com.zetcode.MySQL.Insert(user_id, user_email, user_password);

goer!

:-)
Avatar billede arne_v Ekspert
03. februar 2014 - 16:02 #2
Men jeg gaetter paa at:

MySQL.close(c);

foerst skal kaldes efter insert!
Avatar billede arne_v Ekspert
03. februar 2014 - 16:03 #3
out.print(c);

udskriver naeppe noget brugbart.
Avatar billede arne_v Ekspert
03. februar 2014 - 16:03 #4
Jeg ville lave et eksplcit test paa om det var POST inden jeg begyndte at hente parametre.
Avatar billede mads375 Juniormester
03. februar 2014 - 16:14 #5
Hejsa Arne.

hvad med noget ala dette her:

<%@page
import="jsp.*"
import="java.sql.*"
%>
<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Insert title here</title>
</head>
<body>
    <%
        Connection c = MySQL.connect();
        out.print(c);
        MySQL.close(c);
    %>
    <%
        String user_id = request.getParameter("user_id");
        String user_email = request.getParameter("user_email");
        String user_password = request.getParameter("user_password");
       
        String connectionURL = "jdbc:mysql://localhost:3306/shop";
        Connection connection = null;
       
        PreparedStatement pstatement = null;
       
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        int updateQuery = 0;
       
        if(user_id != null && user_email != null && user_password != null) {
            if(user_id != "" && user_email != "" && user_password != "") {
                try {
                    connection.DriverManager.getConnection(connectionURL, "root", "");
                    String queryString = "INSERT INTO info (user_id, user_email, user_password) VALUES(?, ?, ?)";
                   
                    pstatement = connection.prepareStatement(queyString);
                   
                        pstatement.setString(1, user_id);
                        pstatement.setString(2, user_email);
                        pstatement.setString(3, user_password);
                    updateQuery = pstatement.executeUpdate();
   
   
                }       
               
            }
    %>
        <br>
            <table>
                <tr>
                    <th>Data was inserted successfully</th>
                </tr>
            </table>
                   
   
    <%   
                catch(Exception ex) {
                    out.println("Unable to connect to database");
                }
               
                finally {
                    pstatement.close();
                    connection.close();
                }
            }
        }
    %>
    <br><br><br>
   
    <form method="post" action="index.jsp">
        <table>
            <tr>
                <td>UserID</td><td><input type="text" name="user_id"></td>
            </tr>
            <tr>
                <td>Email</td><td><input type="text" name="user_email"></td>
            </tr>
            <tr>
                <td>Password</td><td><input type="text" name="user_password"></td>
            </tr>
        </table>
        <br>
        <input type="submit" value="submit">
    </form>


</body>
</html>
Avatar billede mads375 Juniormester
03. februar 2014 - 16:15 #6
Jeg får dog nogle fejl ved mine { }. Kan ikke helt se hvorfor

http://postimg.org/image/vm6xfeamx/
Avatar billede arne_v Ekspert
03. februar 2014 - 17:12 #7
<%
        Connection c = MySQL.connect();
        out.print(c);
        MySQL.close(c);
    %>

er vel overfloedig nu
Avatar billede arne_v Ekspert
03. februar 2014 - 17:13 #8
if(user_id != null && user_email != null && user_password != null) {
            if(user_id != "" && user_email != "" && user_password != "") {
                try {
 
                }     
             
            }

maa mangle en }
Avatar billede mads375 Juniormester
03. februar 2014 - 17:21 #9
Sådan her?

<%@page
import="jsp.*"
import="java.sql.*"
%>
<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Insert title here</title>
</head>
<body>
    <%
        Connection c = MySQL.connect();
        out.print(c);
        MySQL.close(c);
    %>
    <%
        String user_id = request.getParameter("user_id");
        String user_email = request.getParameter("user_email");
        String user_password = request.getParameter("user_password");
       
        String connectionURL = "jdbc:mysql://localhost:3306/shop";
        Connection connection = null;
       
        PreparedStatement pstatement = null;
       
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        int updateQuery = 0;
       
        if(user_id != null && user_email != null && user_password != null) {
            if(user_id != "" && user_email != "" && user_password != "") {
                try {
                    connection.DriverManager.getConnection(connectionURL, "root", "");
                    String queryString = "INSERT INTO info (user_id, user_email, user_password) VALUES(?, ?, ?)";
                   
                    pstatement = connection.prepareStatement(queyString);
                   
                        pstatement.setString(1, user_id);
                        pstatement.setString(2, user_email);
                        pstatement.setString(3, user_password);
                    updateQuery = pstatement.executeUpdate();
   
                }
            }
        }
    %>
       
        <br>
            <table>
                <tr>
                    <th>Data was inserted successfully</th>
                </tr>
            </table>
                   
   
    <%   
           
        catch(Exception ex) {
                    out.println("Unable to connect to database");
                }
               
                finally {
                    pstatement.close();
                    connection.close();
                }
       
    %>
    <br><br><br>
   
    <form method="post" action="index.jsp">
        <table>
            <tr>
                <td>UserID</td><td><input type="text" name="user_id"></td>
            </tr>
            <tr>
                <td>Email</td><td><input type="text" name="user_email"></td>
            </tr>
            <tr>
                <td>Password</td><td><input type="text" name="user_password"></td>
            </tr>
        </table>
        <br>
        <input type="submit" value="submit">
    </form>


</body>
</html>
Avatar billede mads375 Juniormester
03. februar 2014 - 17:23 #10
Jeg får lukket alle mine { } efter hvad jeg kan se?
Avatar billede arne_v Ekspert
03. februar 2014 - 17:26 #11
det ser saadan ud
Avatar billede mads375 Juniormester
03. februar 2014 - 17:27 #12
Hov den kører nu:

<%@page
import="jsp.*"
import="java.sql.*"
%>
<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Insert title here</title>
</head>
<body>
    <%
        Connection c = MySQL.connect();
        out.print(c);
        MySQL.close(c);
    %>
    <%
        String user_id = request.getParameter("user_id");
        String user_email = request.getParameter("user_email");
        String user_password = request.getParameter("user_password");
       
        String connectionURL = "jdbc:mysql://localhost:3306/shop";
        Connection connection = null;
       
        PreparedStatement pstatement = null;
       
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        int updateQuery = 0;
       
        if(user_id != null && user_email != null && user_password != null) {
            if(user_id != "" && user_email != "" && user_password != "") {
                try {
                    connection.DriverManager.getConnection(connectionURL, "root", "");
                    String queryString = "INSERT INTO info (user_id, user_email, user_password) VALUES(?, ?, ?)";
                   
                    pstatement = connection.prepareStatement(queyString);
                   
                        pstatement.setString(1, user_id);
                        pstatement.setString(2, user_email);
                        pstatement.setString(3, user_password);
                    updateQuery = pstatement.executeUpdate();
   
       
    %>
       
        <br>
            <table>
                <tr>
                    <th>Data was inserted successfully</th>
                </tr>
            </table>
                   
   
    <%   
           
            }catch(Exception ex) {
                    out.println("Unable to connect to database");
                }
               
                finally {
                    pstatement.close();
                    connection.close();
            }
        }
    }
           
       
    %>
    <br><br><br>
   
    <form method="post" action="index.jsp">
        <table>
            <tr>
                <td>UserID</td><td><input type="text" name="user_id"></td>
            </tr>
            <tr>
                <td>Email</td><td><input type="text" name="user_email"></td>
            </tr>
            <tr>
                <td>Password</td><td><input type="text" name="user_password"></td>
            </tr>
        </table>
        <br>
        <input type="submit" value="submit">
    </form>


</body>
</html>

Når jeg prøver at indtaste noget i min formel, får jeg dog denne besked:



HTTP Status 500 - Unable to compile class for JSP:

type Exception report

message Unable to compile class for JSP:

description The server encountered an internal error that prevented it from fulfilling this request.

exception

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

An error occurred at line: 34 in the jsp file: /index.jsp
DriverManager cannot be resolved or is not a field
31:         if(user_id != null && user_email != null && user_password != null) {
32:             if(user_id != "" && user_email != "" && user_password != "") {
33:                 try {
34:                     connection.DriverManager.getConnection(connectionURL, "root", "");
35:                     String queryString = "INSERT INTO info (user_id, user_email, user_password) VALUES(?, ?, ?)";
36:                    
37:                     pstatement = connection.prepareStatement(queyString);


An error occurred at line: 37 in the jsp file: /index.jsp
queyString cannot be resolved to a variable
34:                     connection.DriverManager.getConnection(connectionURL, "root", "");
35:                     String queryString = "INSERT INTO info (user_id, user_email, user_password) VALUES(?, ?, ?)";
36:                    
37:                     pstatement = connection.prepareStatement(queyString);
38:                    
39:                         pstatement.setString(1, user_id);
40:                         pstatement.setString(2, user_email);


Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728

Nogle der kan læse noget udfra det? :-/
Avatar billede arne_v Ekspert
03. februar 2014 - 17:40 #13
35:                    String queryString = "INSERT INTO info (user_id, user_email, user_password) VALUES(?, ?, ?)";
36:                   
37:                    pstatement = connection.prepareStatement(queyString);


An error occurred at line: 37 in the jsp file: /index.jsp
queyString cannot be resolved to a variable

----

Det ligner en stave fejl - manglende 'r'
Avatar billede mads375 Juniormester
03. februar 2014 - 17:40 #14
Jeg har fået fjernet nogle af fejlene. Jeg er nede på linje 34 nu med DriverManager:

HTTP Status 500 - Unable to compile class for JSP:

type Exception report

message Unable to compile class for JSP:

description The server encountered an internal error that prevented it from fulfilling this request.

exception

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

An error occurred at line: 34 in the jsp file: /index.jsp
DriverManager cannot be resolved or is not a field
31:         if(user_id != null && user_email != null && user_password != null) {
32:             if(user_id != "" && user_email != "" && user_password != "") {
33:                 try {
34:                     connection.DriverManager.getConnection(connectionURL, "root", "");
35:                     String queryString = "INSERT INTO info (user_id, user_email, user_password) VALUES(?, ?, ?)";
36:                    
37:                     pstatement = connection.prepareStatement(queryString);


Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
Avatar billede mads375 Juniormester
03. februar 2014 - 17:42 #15
Avatar billede arne_v Ekspert
03. februar 2014 - 19:10 #16
An error occurred at line: 34 in the jsp file: /index.jsp
DriverManager cannot be resolved or is not a field
31:        if(user_id != null && user_email != null && user_password != null) {
32:            if(user_id != "" && user_email != "" && user_password != "") {
33:                try {
34:                    connection.DriverManager.getConnection(connectionURL, "root", "");

hmm

connection.DriverManager.getConnection(connectionURL, "root", "");

skal nok vaere:

connection = DriverManager.getConnection(connectionURL, "root", "");
Avatar billede mads375 Juniormester
03. februar 2014 - 19:29 #17
crazy.... Min første database forbindelse. Hold kæft det er en god fornemmelse.

Mange tak for det Arne og husk at smid et svar :-)
Avatar billede arne_v Ekspert
03. februar 2014 - 19:37 #18
svar
Avatar billede mads375 Juniormester
03. februar 2014 - 19:40 #19
Kan man egentligt ligge dette i en class under src, så det ikke ligger inde i min html kode?
Avatar billede arne_v Ekspert
03. februar 2014 - 19:45 #20
Avatar billede mads375 Juniormester
03. februar 2014 - 19:53 #21
tak
Avatar billede arne_v Ekspert
03. februar 2014 - 20:01 #22
Java web apps er et meget stor omraade.

Foerst skal du kende Java som sprog og det er i sig selv stort.

Saa skal du kende de grundliggende teknologier:
* servlets
* JSP
* taglibs
* JSTL
* Facelets

Og saa skal du igang med et eller flere frameworks:
* JSF
* Struts 1
* Struts 2
* Spring MVC
* Wicket
* GWT
etc.

Og saa kan du gaa igang med de oevrige dele af Java EE:
* JMS
* EJB
* JAX-WS
* JAX-RS
etc.
Avatar billede mads375 Juniormester
03. februar 2014 - 20:24 #23
Ja der ligger meget arbejde forude må man sige. Indenfor den sidste måneds tid er jeg kommet godt langt, blandt andet fordi jeg har fået noget privat undervisning. Så jeg er begyndt at tænke det at kode anderledes end jeg har gjort før
Avatar billede arne_v Ekspert
03. februar 2014 - 20:31 #24
Foruden mine artikler er der mange andre gode kilder paa nettet.

Den officielle tutorial:

http://docs.oracle.com/javaee/7/tutorial/doc/

Her er der ogsaa rigtigt meget:

http://pdf.coreservlets.com/

Artikler:

http://www.theserverside.com/

http://www.javaworld.com/
Avatar billede mads375 Juniormester
03. februar 2014 - 20:35 #25
super mange tak for det Arne. Du er sku en flink mand :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester