-
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
-
charytka
- Przeglądaj grona w kategorii Internet i Komputery
- Przeglądaj grona w okolicy Warszawa
- Załóż własne grono tematyczne
- Zostań moderatorem
Podobne Tematy
|
|
Wszystko co związane z programowaniem w Java (J2EE, JSP, JDBC, itd) test
Miejsca grona (1)
-
Kino Luna ul. Marszałkowska, Warszawa
www.kinoluna.pl kino.luna@maxfilm.com.pl 22 621 78 28
- Dodaj miejsce

