Gå til innhold

Hvordan hindre libpqxx i å terminere programmet?


Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...