Avatar billede lorgani Nybegynder
01. februar 2001 - 12:30 Der er 7 kommentarer

servlet, Sqlservlet

Jeg er en begynder og vil gerne lave et servlet der kan skrive og læse fra og skrive til SQL database og
Jag kan ikke få mit servlet for at fungere jeg mener med hjælp af forms kan jeg ikke opdatere eller slet noget.
here coden:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType(\"text/html\");
    PrintWriter out = new PrintWriter (response.getOutputStream());
    out.println(\"<html>\");
    out.println(\"<head><title>Fagbeskrivelse</title></head>\");
    out.println(\"<body bgcolor=\\\"#aaaaaa\\\">Hello From Fagbeskrivelse ()\");
    out.println(\"<p>Nu kommer tabellen: <table>\");
    out.println(
      \"<tr><td><h3>bogid</td><td><h3><A HREF=http://www.jubii.dk>Navnyy</td><td>\" +
      \"<h3>Forfatter</td><td><h3>Forlag</td><td><h3>Udgavedato</td><td><h3>Pris</td></h3></tr>\"
    );

    try{

    //  Class.forName(\"oracle.jdbc.driver.OracleDriver\");
      Class.forName(\"oracle.jdbc.driver.OracleDriver\");
      Connection con = DriverManager.getConnection(
                    \"jdbc:oracle:thin:@oracle:1521:student\",
                    \"stuk1147\", \"stuk1147\");

      CallableStatement s = con.prepareCall(\"SELECT bogid, navn, forfatter, forlag, udgavedato, pris FROM bog\");

      ResultSet rs = s.executeQuery();


      while (rs.next())
      {
        String bogid = rs.getString(\"bogid\");
        String navn = rs.getString(\"navn\");
        String forfatter = rs.getString(\"forfatter\");
        String forlag = rs.getString(\"forlag\");
        String udgavedato = rs.getString(\"udgavedato\");
        String pris = rs.getString(\"pris\");


        out.println(\"<tr><td>\"+bogid+\"</td><td>\"+navn+\"</td><td>\"+forfatter+\"</td><td>\"+forlag+\"</td><td>\"+udgavedato+\"</td><td>\"+pris+\"</td></tr>\");


      }
      out.println(\"</table> Slut på tabel\");
      String book = \"\";

      out.println(\"<h1>Indtast ny række</h1>\");
      out.println(\"<td><h3>bogid</h3><form name=bogid><input type=text name=bogid><input type=submit></form></td>\");
      out.println(\"<tr><td><h3>navn</h3></td><form name=navn><input type=text name=navn></form></td></tr>\");
      out.println(\"<tr><td><h3>forfatter</h3><form name=forfatter><input type=text name=forfatter></form></td></tr>\");
      out.println(\"<tr><td><h3>forlag</h3><form name=forlag><input type=text name=forlag></form></td></tr>\");
      out.println(\"<tr><td><h3>udgavedato</h3><form name=udgavedato><input type=text name=udgavesdato></form></td></tr>\");
      out.println(\"<tr><td><h3>pris</h3><form name=pris><input type=text name=pris><input type=submit></form></td></tr>\");

        String BogID = request.getParameter(\"BogID\");
        String navn = request.getParameter(\"navn\");
        String forfatter = request.getParameter(\"forfatter\");
        String forlag = request.getParameter(\"forlag\");
        String udgavedato = request.getParameter(\"udgavedato\");
        String pris = request.getParameter(\"pris\");
        book = (BogID + navn + forfatter + forlag + udgavedato + pris);

      if (book != null && book.length()>0) {
        CallableStatement s2 = con.prepareCall(\"INSERT INTO bog VALUES (book)\");
        s2.execute();
        out.println(\"<h2>Ny dag indsat!! \"+book+\"</h2>\");
      }


      // String forfatter = request.getParameter(\"navn\");
      if (forfatter != null && forfatter.length()>0) {
        CallableStatement s2 = con.prepareCall(\"INSERT INTO bog VALUES (7,\'akbar\',bjørn,ITD,1999,pris)\");
        s2.execute();
        out.println(\"<h2>Ny dag indsat!! \"+forfatter+\"</h2>\");
      }


    }
    catch (Exception e) {
      out.println(\"<h1>Fejl!</h1>\");
      out.println(\"Fejlen var:\"+e+\"<br><pre>\");
      e.printStackTrace(out);
      out.println(\"</pre>\");
      e.printStackTrace();
    }

    out.println(\"</body></html>\");
    out.close();
  }

  /**
  * Process the HTTP Post request
  */
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType(\"text/html\");
    PrintWriter out = new PrintWriter (response.getOutputStream());
    out.println(\"<html>\");
    out.println(\"<head><title>Fagbeskrivelse</title></head>\");
    out.println(\"<body>\");
    out.println(\"</body></html>\");
    out.close();
  }

  /**
  * Get Servlet information
  * @return java.lang.String
  */
  public String getServletInfo() {
    return \"Fagbeskrivelse Information\";
  }
}
Avatar billede disky Nybegynder
01. februar 2001 - 12:33 #1
et lille tip, lav din form i en JSP side eller html side.

Som så som action kalder en Bean, så for du langt mere overskuelig kode :)
Avatar billede Slettet bruger
01. februar 2001 - 12:59 #2
Hvad er der galt med din kode?

Jeg kan godt få det til at oversætte?

Skriv, hvad der er galt.
Avatar billede disky Nybegynder
01. februar 2001 - 13:01 #3
hvorfor pokker har du en form per input felt ???

og hvorfor kører du samme spørgsmål i 2 tråde ?
Avatar billede Slettet bruger
01. februar 2001 - 13:05 #4
disky har vist fat i noget der.

Desuden: Du lukker ikke dine statements.

Og: Udtrykket \'if (book != null && book.length()>0) {\' vil ikke virke efter hensigten, fordi strengen nullnullnull... ikke er null.
Avatar billede lorgani Nybegynder
01. februar 2001 - 13:19 #5
Problemmet er:
Når jeg aktivere servletten i et web broseren og derefter indtaster noget i alle de felter der tilhøre idette tilfælde Bog tabel, bliver tabellen ikke opdateret og viser dette fejl:

Fejl!
Fejlen var:java.sql.SQLException: ORA-00947: ikke nok værdier

java.sql.SQLException: ORA-00947: ikke nok værdier

    void oracle.jdbc.driver.OracleStatement.doExecuteWithBatch()
    void oracle.jdbc.driver.OracleStatement.doExecute()
    void oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout()
    int oracle.jdbc.driver.OraclePreparedStatement.executeUpdate()
    boolean oracle.jdbc.driver.OraclePreparedStatement.execute()

Avatar billede Slettet bruger
01. februar 2001 - 13:34 #6
Så har din tabel bog flere felter end du tror.

Erstat

CallableStatement s2 = con.prepareCall(\"INSERT INTO bog VALUES (7,\'akbar\',bjørn,ITD,1999,pris)\");

med

Statement s2 = con.createStatement();
s2.executeUpdate(\"INSERT INTO (bogid, navn, forfatter, forlag, udgavedato, pris) bog VALUES (7,\'akbar\',\'bjørn\',\'ITD\',1999,\'\"+pris+\")\");
Avatar billede Slettet bruger
01. februar 2001 - 13:39 #7
UNDSKYLD forkert syntaks:
INSERT INTO bog (...) VALUES ...
ikke
INSERT INTO (...) bog VALUES
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
Kategori
Kurser inden for grundlæggende programmering

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