Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 2.616 pregleda

Najnovija ↓

Ogranicavanje unosa istih vrednosti u bazu!? 15.01.2012. u 00:03 · pre 180 meseci #1
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();

.......

Re: Ogranicavanje unosa istih vrednosti u bazu!? 15.01.2012. u 11:23 · pre 180 meseci #2
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
Potpis
Bolje džaba ležat nego džaba radit.
Re: Ogranicavanje unosa istih vrednosti u bazu!? 15.01.2012. u 11:37 · pre 180 meseci #3
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
Potpis
http://biske.rs
Re: Ogranicavanje unosa istih vrednosti u bazu!? 15.01.2012. u 11:55 · pre 180 meseci #4
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 |
Re: Ogranicavanje unosa istih vrednosti u bazu!? 15.01.2012. u 12:58 · pre 180 meseci #5
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?
Potpis
http://biske.rs
Re: Ogranicavanje unosa istih vrednosti u bazu!? 15.01.2012. u 14:01 · pre 180 meseci
izmenjeno 1 put, poslednji put dekifpi 15.01.2012. u 14:16
  1. dekifpi15.01.2012. u 14:16zapis iz teksta poruke
#6
Hvala puno na savetima, uspeo sam da resim sa SQL Unique. ;)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme