Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[JAVA] Program nie wstawia wierszy do bazy danych

#1
[JAVA] Program nie wstawia wierszy do bazy danych
Mam problem z programem w Javie. Do skonfigurowania połączenia z bazą danych mam użyć pliku xml który wygląda tak:
Kod:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
   <context-param>
       <param-name>driver</param-name>
       <param-value>org.apache.derby.jdbc.ClientDriver</param-value>
   </context-param>
   <context-param>
       <param-name>url</param-name>
       <param-value>jdbc:derby://localhost:1527/DataBase</param-value>
   </context-param>
   <context-param>
       <param-name>login</param-name>
       <param-value>log</param-value>
   </context-param>
   <context-param>
       <param-name>password</param-name>
       <param-value>pass</param-value>
   </context-param>
   <session-config>
       <session-timeout>
           30
       </session-timeout>
   </session-config>
</web-app>

Pobieranie parametrów bazy danych i tworzenie połączenia
Kod:
try {
           Class.forName("org.apache.derby.jdbc.ClientDriver");
       } catch (ClassNotFoundException ex) {
           Logger.getLogger(CensorServlet.class.getName()).log(Level.SEVERE, null, ex);
       }


try {

                // loading the driver
                Class.forName(servletContext.getInitParameter("driver"));
                // creating connection with the database
                Connection con= DriverManager.getConnection(servletContext.getInitParameter("url"),
                        servletContext.getInitParameter("login"), servletContext.getInitParameter("password"));
                servletContext.setAttribute("con", con);
            } catch (ClassNotFoundException | SQLException | NullPointerException e) {
              //  return false;
            }

wykonywanie inserta


Kod:
Statement statement = (Statement) context.getAttribute("con");
try {
                   statement.executeUpdate("INSERT INTO tabela VALUES (1, 'Nowak', 'Jan', '5.0', 'test')");
               } catch (SQLException ex) {
                   Logger.getLogger(CensorServlet.class.getName()).log(Level.SEVERE, null, ex);
               }


Problem w tym że w tabeli nie pojawiają się żadne nowe rekordy. Wszystko jest robione w netbeansie, baza danych też.

Dodaje kod serwletu w którym łącze się do bazy za pomocą tego pliku xml i próbuje robić inserta
http://wklej.org/id/1925434/
do tego plik xml
http://wklej.org/id/1925436/
 System operacyjny: windows_seven Przeglądarka: firefox
#2
RE: [JAVA] Program nie insertuje wierwszy do bazy danych
Trochę mało informacji, ale do developmentu ustawia się poziom logowania tak żeby jak najwięcej logował, a nie najmniej. Zmien Level.SEVERE na Level.FINEST. Sprawdź co zwraca wywołanie statement.executeUpdate. Czy w bazie danych rekord z ID równym 1 już istnieje? Podejrzewam, że może to być klucz główny i dlatego insert nie zadziała ponownie.
 System operacyjny: linux_fedora Przeglądarka: firefox
#3
RE: [JAVA] Program nie insertuje wierwszy do bazy danych
Connection con= DriverManager.getConnection(servletContext.getInitParameter("url"),
servletContext.getInitParameter("login"), servletContext.getInitParameter("password"));
servletContext.setAttribute("con", con);

Statement statement = (Statement) context.getAttribute("con");

Pobieranie atrybutu Connection do Statement , ta głupia pomyłka była powodem tego że to nie działało. Dzięki Koneton za pomoc. Nie odpisałem zaraz po twoim poście bo gdy zmieniałem kod by zobaczyć co zwraca statement.executeUpdate to zauważyłem że mój statement w podpowiedziach miał zupełnie inne metody niż powinien mieć. To mi już nie pasowało i chciałem najpierw to sprawdzić.
 System operacyjny: windows_seven Przeglądarka: firefox
#4
RE: [JAVA] Program nie wstawia wierszy do bazy danych
Czy w takim wypadku statement nie powinien być nullem lub wystąpić błąd rzutowania? Może gdzieś dalej ukrywasz błędy i tego nie widziałeś?
 System operacyjny: windows_seven Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki ([JAVA] Program nie wstawia wierszy do bazy danych)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Wyświetlanie informacji z bazy danych na stronie www PitPlay 1 16682 16.09.2019, 11:18
Ostatni post: Ajgor
  Java- wypisanie liczb, które nie są podane w tablicy , wypisanie liczb z tablicy all? ccomp 10 20540 16.07.2017, 20:10
Ostatni post: ccomp
  czy w java można napisać dowolny program ? anders33 7 13777 04.04.2017, 22:03
Ostatni post: koneton

Skocz do: