[ dekifpi @ 14.01.2012. 23:03 ] @
Imam bazu u koju korisnik moze da upise npr. neki prihod. Muci me to kako da mu zabranim da upise prihod koji vec postoji. Postavicu kod sa kojim vrsim upis u bazu, e sad ne znam kako da prepravim kod koji bi popunjavao bazu samo vrednostima koje nisu upisane. Ako ima neko ideju neka napise. Unapred hvala!!!

Code:


........

String naziv=textField.getText();
   
    
    Class.forName("org.apache.derby.jdbc.ClientDriver");
    Connection con=(Connection)DriverManager.getConnection("jdbc:derby://localhost:1527/proba;");
    Statement st=con.createStatement();
    
   
        st.executeUpdate("INSERT INTO T_PROBA (PRIHOD) VALUES ('"+ naziv +"')");
       
        
        
    st.close();
    con.close();

.......

[ Au197/79 @ 15.01.2012. 10:23 ] @
Po čemu znaš da neki prihod već postoji? Dakle kad utvrdiš šta predstavlja identitet entiteta koji čuvaš (neka šifra, nešto jedinstveno što razlikuje svaki red) onda ćeš to koristit da zabraniš dupliranje. A padaju mi na pamet 2 načina: 1) da pre inserta uradiš selekt po tom (tim) kolonama koje predstavljaju identitet pa ako nađeš red ne radiš insert, 2) da u šemi baze staviš UNIQUE CONSTRAINT pa onda insert ima da izbaci exception.

I jedna primedba, način na koji koristiš JDBC je loš. Koristi prepared statement-e: http://www.exampledepot.com/egs/java.sql/InsertPs.html
[ biske86 @ 15.01.2012. 10:37 ] @
Ovo se uglavnom ne radi na aplikativnom nivou, već na nivou baze pdoataka.
Znači treba da ubaciš jedinstveni indeks nad tom kolonom. Međutim, sumnjam da bi to rešilo tvoj problem, pošto ne verujem da ti tabela stvarno ovako izgleda, već mora da ima još kolona. Tako da ako hoćeš da ti pomognemo, daj više informacija. Na primer, pretpostavljam da si mislio da jedan korisnik ne može dva puta da unese istu vrednost. Ako je tako onda bi indeks trebalo da ide nad dve kolone (KorisnikID, Vrednost).

Inače što se tiče kreiranja indeksa pogledaj:
http://db.apache.org/derby/docs/10.1/ref/rrefsqlj20937.html
[ dekifpi @ 15.01.2012. 10:55 ] @
Da, mislio sam da korisnik ne moze da unese dve iste vrednosti. A tabela ima sledece kolone:

ID Prihod Vrednost
--------------------------------------
| | |
| | |

I naravno ne bi smelo da se desi sledece(dve iste vrednosti u tabeli tj. bazi):

ID Prihod Vrednost
--------------------------------------
1 | PLATA | 100 |
2 | PLATA | 150 |
[ biske86 @ 15.01.2012. 11:58 ] @
Citat:
dekifpi: Da, mislio sam da korisnik ne moze da unese dve iste vrednosti. A tabela ima sledece kolone:

ID Prihod Vrednost
--------------------------------------
| | |
| | |

I naravno ne bi smelo da se desi sledece(dve iste vrednosti u tabeli tj. bazi):

ID Prihod Vrednost
--------------------------------------
1 | PLATA | 100 |
2 | PLATA | 150 |

Jel ID u stvari id korisnika? Šta je u ovoj tabeli primarni ključ? Jel ova tabela vezana za neku drugu tabelu?
[ dekifpi @ 15.01.2012. 13:01 ] @
Hvala puno na savetima, uspeo sam da resim sa SQL Unique. ;)

[Ovu poruku je menjao dekifpi dana 15.01.2012. u 14:16 GMT+1]