Java [1241]

Zapisz się
Dodaj kartkę Dodaj bana
Powód wlepienia kartki
Wybierz wątek docelowy z listy lub wpisz jego ID
  • Marcsinh

    Witam, mam tabele w bazie danych (MySQL), w ktorej znajduja sie przedmioty (Matematyka, Geografia itd) oraz servlet, który wyswietla liste tych przedmiotow i dodaje nowy, jezeli przedmiotu jeszcze nie ma w tabeli. Jezeli dodaję przedmiot bezposrednio w konsoli MySQL, to pozniejsze sprawdzenie w servlecie czy taki przedmiot juz istnieje - dziala. Problem pojawia sie, kiedy z poziomu przegladarki dodaje nowy przedmiot, a pozniej jeszcze raz ten sam - servlet zachowuje sie tak, jakby tego przedmiotu nie dodano (nie dziala sprawdzenie czy przedmiot jest juz w bazie), chociaz pod konsola MySQL widac, ze zostal dodany (jezeli kilka razy dodajemy ten sam przedmiot, figuruje on kilka razy w bazie). W czym moze byc problem? Podejrzewam, ze chodzi o transakcje, ale proponowane przeze mnie rozwiazania nie daja rezultatow. Prosze o pomoc. Ponizej znajduje sie kod servletu:
  • Marcsinh

    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet. http.HttpServlet;
    import javax.servlet. http.HttpServletRequest;
    import javax.servlet. http.HttpServletResponse;

    import java.sql.*;
    import java.sql.Statement;

    public class Przedmioty extends HttpServlet {
    protected void processRequest(HttpServletRequ est request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/ html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    String czy_wyslano = null;
    String nazwa = "";
    int ilosc_wierszy = 0;
    int ins = 0;
  • Marcsinh

    try {
    Class.forName("com.mysql.jdbc. Driver").newInstance();

    out.println("<html>");
    out.println("<head>");
    out.println("<title>Przedmioty </title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<h1>Servlet Przedmioty at " + request.getContextPath () + "</h1>");

    czy_wyslano = request.getParameter("czy_wysl ano");
    if(czy_wyslano != null)
    {
    czy_wyslano = null;
    nazwa = request.getParameter("nazwa_pr zedmiotu");
    ilosc_wierszy = 0;
    Connection con = DriverManager.getConnection ("jdbc:mysql://localhost:3306/ dzienniczek", "lump", "lump");
    con.setAutoCommit(false);
    try
    {
    Statement stmt = con.createStatement();
    String query = "SELECT id_przedmiotu FROM przedmioty WHERE nazwa_przedmiotu='" + nazwa + "';";
    out.print("Zapytanie: " + query + "<br/ >");
    ResultSet rs = stmt.executeQuery(query);
    while(rs.next())
    ilosc_wierszy++;
    rs.close();
    stmt.close();
    con.commit();
    }
    finally
    {
    con.close();
    }
    out.println("W tabeli przedmioty znajduje sie " + ilosc_wierszy + " dla przedmiotu " + nazwa);
    if(ilosc_wierszy == 1)
    out.println("Istnieje juz taki przedmiot");
  • Marcsinh

    else if(ilosc_wierszy == 0)
    {
    Connection con1 = DriverManager.getConnection ("jdbc:mysql://localhost:3306/ dzienniczek", "lump", "lump");
    con1.setAutoCommit(false);
    try
    {
    Statement stmt1 = con1.createStatement();
    ins = stmt1.executeUpdate("INSERT INTO przedmioty(nazwa_przedmiotu) VALUES(' " + nazwa + " ') ");
    stmt1.close();
    con1.commit();
    }
    finally
    {
    con1.close();
    }
    }
    else
    out.println("ilosc wierszy: " + ilosc_wierszy + " - wartosc niedozwolona");
    out.println("Ins: " + ins);
    }

    out.println("<h2>Lista przedmiotów:</h2>");
    Connection con2 = DriverManager.getConnection ("jdbc:mysql://localhost:3306/ dzienniczek", "lump", "lump");
    con2.setAutoCommit(false);
    try
    {
    Statement stmt2 = con2.createStatement();
    ResultSet rs2 = stmt2.executeQuery("SELECT nazwa_przedmiotu FROM przedmioty ORDER BY nazwa_przedmiotu ASC");
    while(rs2.next())
    {
    String str = rs2.getObject(1).toString();
    out.println("<p>" + str + "</p>");
    }
    rs2.close();
    stmt2.close();
    con2.commit();
    }
    finally
    {
    con2.close();
    }
  • Marcsinh

    out.println("<h3>Dodaj przedmiot:</h3>");
    out.println("<form action=\"Przedmioty\" method=\"GET\">");
    out.println("Podaj nazwę przedmiotu: <input type=\"text\" name=\"nazwa_przedmiotu\" value=\"\" size=\"50\"/ >");
    out.println("<input type=\"hidden\" name=\"czy_wyslano\" value=\"wyslano\"/ >");
    out.println("<input type=\"submit\" value=\"Dodaj przedmiot\"/ >");
    out.println("</form>");
    out.println("</body>");
    out.println("</html>");

    }
    catch (Exception e)
    {
    throw new ServletException("Servlet Could not display records.", e);
    }
    finally {
    out.close();
    }
    }
  • Marcsinh

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
    return "Short description";
    }// </editor-fold>

    }
  • Marcsinh

    Spoko, znalazlem juz problem.
  • charytka

    jak mogę włączyć obsługę języka Java Script?
| |

Wszystko co związane z programowaniem w Java (J2EE, JSP, JDBC, itd) test



Fotki

Miejsca grona (1)