Witam wszystkich,
właśnie jestem na etapie pisania aplikacji bazodanowej i natrafiłem na 1 problem z insertem.
Baza danych jest postawiona na postgresie, znajduje sie tam tabela klienci. Primary key to id_klienta -id powinno byc autoinkrementowane - w tym celu stworzyłem sekwencję zwaną idklienta_seq (sekwencja polega na wywolaniu metody nextval()).
Po uruchomieniu programu dostaje
org.postgresql.util.PSQLException: BŁĄD: brakująca klauzula FROM dla tabeli "idklienta"
Pozycja: 121
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2101)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1834)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:510)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:386)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:379)
at bazaDanych.KlientDB.insert(KlientDB.java:153)
at bazaDanych.Testowa.main(Testowa.java:50)
Fragment kodu o który chodzi to:
public void insert (Klient k){
Connection conn = null;
PreparedStatement pst = null;
try{
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/Projekt", "postgres", "qwe");
pst = conn.prepareStatement("INSERT INTO klient( id_klienta, imie, nazwisko, adres, pesel, " +
"nr_rach_bankowego, id_firmy, rabat, adres_email) VALUES (idklienta.seq, ?, ?, ?, ?, ?, ?, ?, ?)");
//pst.setInt(1, k.getId());
pst.setString(1, k.getImie());
pst.setString(2, k.getNazwisko());
pst.setString(3, k.getAdres());
pst.setString(4, k.getPESEL());
pst.setString(5, k.getNr_Bankowy());
pst.setInt(6, k.getId_firmy());
pst.setInt(7, k.getRabat());
pst.setString(8, k.getAdres_email());
pst.execute();
}catch(Exception e){
e.printStackTrace();
}finally{
if(pst!=null){
try{
pst.close();
}catch (SQLException e){
e.printStackTrace();
}
}
if(conn!=null){
try{
conn.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
}
A tu klasa uruchamiajaca:
public class Testowa {
public static void main(String[] args) {
KlientDB kl = new KlientDB();
Klient k = new Klient();
//k.setId(5);
k.setImie("Aejos1");
k.setNazwisko("Najmana");
k.setAdres("Pyskowa");
k.setAdres_email("[email protected]");
k.setId_firmy(5);
k.setNr_Bankowy("12322344");
k.setPESEL("99023323064");
k.setRabat(10);
kl.insert(k);
}
}
Dodam, że Eclispe zwraca błąd w miejscu pst.execute();
Jakies pomysły, co jest nie tak?