Skinney Skrevet 30. april 2007 Del Skrevet 30. april 2007 Hey, Holder på å programmere en masterserver for en MMO jeg lager som hobbyprosjekt, har en funksjon som skal hente informasjon fra PostgreSQL serveren min og sammenligne informasjonen med brukernavn og passord fra klienten. Jeg benytter meg av libpqxx for å få tilgang til PostgreSQL serveren. Jeg har derimot et problem... Hvis jeg kjører en SQL query som gir en feilmelding tilbake som f.eks en SELECT kommando med ugyldig kolonne navn, så vil libpqxx terminere programmet med en feilmelding. Hvordan hindrer jeg libpqxx i å terminere programmet mitt? Lenke til kommentar
siDDis Skrevet 30. april 2007 Del Skrevet 30. april 2007 Du kan vell stille deg sjølv det spørsmålet kvifor du vil kalle på ein kolonne som ikkje eksisterer? Eg ville faktisk ha jobba med å løyse det istadenfor å plundre med libpqxx sin oppførsel Ellers blir sånne ting normalt laust med bruk av try & catch når du ikkje er sikker på om koden din vil fungere. Lenke til kommentar
Skinney Skrevet 30. april 2007 Forfatter Del Skrevet 30. april 2007 vel, greia er det at jeg skal lete gjennom en tabell etter et brukernavn som brukeren selv skriver inn, og hvis brukeren skriver feil så er det litt kjipt om han kræsjer hele serveren... Jeg kan jo selvfølgelig kalle hele tabellen og håndtere informasjonen i selve programmet, men jeg lurer på hvor mye tid jeg taper på dette... spesielt hvis tabellen inneholder et par tusen brukernavn/passord... try/catch har heller ikke fungert Lenke til kommentar
Manfred Skrevet 30. april 2007 Del Skrevet 30. april 2007 paste utdrag av koden din da. Vi er ikke helt synske. Lenke til kommentar
Skinney Skrevet 30. april 2007 Forfatter Del Skrevet 30. april 2007 bool DB::Authenticate(string username, string password) { work RetrieveUser(*Connect); Result R = RetrieveUser.exec("SELECT username, password FROM Accounts WHERE username='" + username + "'"); RetrieveUser.commit(); string user = R[0]["username"].as(string()); string pass = R[0]["password"].as(string()); if(user == username) { if(pass == password) { return true; } } return false; } Her har jeg ikke brukt try og catch, mest fordi det ikke har fungert for meg... Vil det ha noe å si hva som står i catch()? F.eks hvis det står catch(const sql_error &e) { } og feilmeldingen jeg får er invalid_column error, vil det da ha noe å si for om programmet terminerer eller ikke? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå