Java - Metoda dodawania rekordów

0

Witam.

Mam przykładowy program do połączenia z bazą danych oraz wstawienia do niej rekordu.

http://pastebin.com/sSUDgqQX

Chciałbym aby wstawianie nowego rekordu odbywało się poprzez metodę, lecz nie wiem jak
mógłbym to zaimplementować, gdyż w metodzie nie mogę odnosić się do "Connection" oraz "Statement" które
są w ciele klasy SQL.

W jaki sposób mógłbym rozwiązać ten problem? Po prostu żeby program łączyl się z BD, a następnie metoda z klasy, która łączyła się
do BD, dodaje nowy rekord...

Mam nadzieje że wiadomo o co mi chodzi, dodam że uczę się JAVY od 3 dni.. dlatego proszę o nutkę wyrozumiałości.

Pozdrawiam

4

W taki sposób, pisząc zapytanie jako string itp. pisało się lata temu, nikt już tak nie pisze, bo to brzydkie ohydne i nieprzyjazne do używania/rozbudowy. Wszyscy używają ORMa i JPA. - To tak, żebyś miał świadomość.

Odpowiadając na pytanie, tak na prędze naklepałam, taki schemat, jak ja to widzę (pisane w przeglądarce, nie gwarantuję że się skompiluje :)):

 
public class DBTemplate(){
    private static String URL = "jdbc:mysql://localhost:3306/";
    private static String USER = "root";
    private static String PASSWORD = "";

    public Connection getConection(){
             return DriverManager.getConnection(URK, USER, PASSWORD);
    }
}

public class PersonManager extends DBTemplate {
    
    public void addPerson() {
        try {
          Connection con = getConnection();
          Statement stt = con.createStatement();
      
          stt.execute("INSERT INTO osoba(imie, nazwisko, wiek, pesel) VALUES" +
          "('jan', 'nowak', 25, 99999)");

          stt.close();
          con.close();
       
       } catch (Exception e) {
          e.printStackTrace();
       }
   
    }

    public void find() {
        try {
          Connection con = getConnection();
          Statement stt = con.createStatement();
      
          ResultSet res = stt.executeQuery("SELECT * FROM osoba WHERE nazwisko = 'nowak'");

          res.close();
          stt.close();
          con.close();
       
       } catch (Exception e) {
          e.printStackTrace();
       }
   
    }


}

P.S.:@szweszwe zamknął połączenie, więc musiałby je ponownie otworzyć, więc bez sensu takie rozwiązanie, ale owszem mógłby skorzystać z tej samej zmiennej, tylko po co.

0

Bardzo dziękuje, właśnie o taki przykład mi chodziło :)

A w szczególności teraz pojąłem co było źle :)

0

Jak musisz coś robić z czystym JDBC może zainteresować Cię Spring JDBC template. Można ograniczyć łapanie paskudnych wyjątków.

0

W jaki sposób mogę zająć się "SqlException" przy metodzie "Connection getConnection()" która zwraca DriverManager.... ?

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1