24. marts 2004 - 10:19Der er
11 kommentarer og 1 løsning
Logik - oprettelse af felter i db.
Hejsa,
Jeg har et problem mht. oprettelse af noget logik til nogle felter som skal oprettes i min db.
En bruger kan tilører en bestemt gruppe, og dette har jeg en side hvor man kan ændre tilhørsforhold. Det vil sige at brugeren kan være uændret, kan få tilføjet og kan få fjernet grupper efter opdatering.
---------- Kode ---------- Vector checked = new Vector();//en vector som har de grupper som vedkommende er medlem af (fx, 1 3 4 6). (før værdier)
//the groups the user has entered as the new groups. //String group = er en streng af typen "1,2,3...." og har alle de grupper som vedkommende skal være del af efter opdatering
boolean insert = false; boolean delete = false; stmt.clearBatch(); String insertGroup = null; StringTokenizer tokens = new StringTokenizer(group, ",", false); while(tokens.hasMoreElements()) { String token = tokens.nextToken(); token.trim(); for (i = 0; i < checked.size(); i++) { if(token.equals((String) checked.elementAt(i))) break; else if(!token.equals((String) checked.elementAt(i))) { //ny skal indsættes hvis den ikke eksiterer i forvejen!! insert = true; } else if(!((String) checked.elementAt(i)).equals(token)) { delete = true; } }
if(insert) { //udført INSERT INTO } else //udfør DELETE og slet hvor relevant
stmt.addBatch(insertGroup); }
----- ***** ----- Så det ovenstående skal gøre er: 1. Hvis den eksistere break ud af løkken og gør ingenting. 2. Hvis den er ny sæt opdater flag, og foretag opdatering. 3. Skal kunne finde ud af om der er blevet fjernet grupper, og så delete disse...
Arne, nedenstående på baggrund af dit indlæg, men giver nogle fejl:
Hvis min bruger tidligere var reg. i 4 grupper og jeg tilføjer een, så bliver den nye gruppe registreret 5 gange. Min vector new2 indeholder ALLE grupper som vedkommende nu er registreret i!
arrgghh der er et eller andet der ikke er helt godt.. Når jeg tilføjer mere end en bliver kun den ene tilføjet. Når jeg sletter en og tilføjer en anden bliver følgende fejl rapporteret 'java.lang.ArrayIndexOutOfBoundsException: 2 >= 2'. Nu smider jeg lige min kode så kan du lige se om der er noget der er helt forrykt..:
for (int n = 0; n < new2.size(); n++) { if(!checked.contains(new2.get(n))) { //Insert insertGroup = "INSERT INTO user_group_user_link (user_id, group_id) VALUES("+id+", "+new2.elementAt(i)+")"; stmt.addBatch(insertGroup); } }
for (i = 0; i <checked.size(); i++) { if(!new2.contains(checked.elementAt(i))) { //Delete insertGroup = "DELETE FROM user_group_user_link WHERE user_id = "+id+" AND group_id = "+checked.elementAt(i); stmt.addBatch(insertGroup); } }
Ok.. da jeg fik tændt hovedet og pudset brillerne lykkedes det... flere fejl i n og i reference.. lukker, tak!!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.