Προς το περιεχόμενο

try-catch ερώτηση


georginos1989

Προτεινόμενες αναρτήσεις

Έχω ενα προγραμμα στη c++ με φορμες/units... και σύνδεση με βάση, εκτελεση ερωτημάτων... Μέσα στις συναρτησεις που κανουν συνδεση και εκτελουν τα ερωτηματα σκεφτομαι να βαλω try catch αλλά στο catch τι θα βάλω; κάτι σαν μνμ δεν πρέπει να μπει πχ αποτυχής σύνδεση; Αν δεν θέλεις να κάνει τπτ το catch αλλά μόνο να πιάνει τα exceptions και να μην χτυπάει το πρόγραμμα τι κάνεις;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Βαζεις ellipses (catch(...)) αν δε ξερεις τι θα σου πεταξει, αν ξερεις τοτε βαζεις ενα instance του object που μπορει να σου πεταξει πχ catch(const char* e)

 

ΥΓ: Αν πεταξει κανα exception τοτε οτι ειναι μεσα στη try καταστρεφεται

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

>class exception_foo
{
private:
std::string errorMsg;
public:
exception_foo(const char* what)
	: errorMsg(what)
{
}
const char* what()
{
	return this->errorMsg.c_str();
}
};
class foo
{
public:
foo()
{
	printf("created\n");
}
~foo()
{
	printf("deleted\n");
}
void boom()
{
	throw exception_foo("error");
}
};
int main(int,char**)
{
try
{
	foo f;
	f.boom();
}
catch(exception_foo e)
{
	printf("some error catched! Message:%s\n",e.what());
}
return 0;}

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Για να μην ανοιγω καινουργιο θεμα

 

Εχω κανει την παρακατω συναρτηση η οποια φτιάχνει ένα string το οποιο περιέχει ένα ερώτημα sql

 

bool ControlAdmin::createSecretary(Secretary sec)

{

string query;

bool isOk;

string name=sec.getName(),surname=sec.getSurname(),username=sec.getUsername(),passwd=sec.getPassword();

string city=sec.getCity(), address=sec.getAddress(), phone=sec.getPhone(), mobile=sec.getMobileNumber();

string email=sec.getEmail(), section=sec.getSection();

 

 

query="insert into secretary (name, surname, username, password, city, address,";

query+="phone_number, mobile_number, email, section, KA) values('"+name+"',";

query+="'"+surname+"','"+username+"','"+passwd+"',";

query+="'"+city+"','"+address+"','"+phone+"'," ;

query+="'"+mobile+"','"+section+"','11')";

 

/*

query="insert into secretary (name, surname, username, password, city, address,";

query+="phone_number, mobile_number, email, section, KA) values('"+sec.getName()+"',";

query+="'"+sec.getSurname()+"','"+sec.getUsername()+"','"+sec.getPassword()+"',";

query+="'"+sec.getCity()+"','"+sec.getAddress()+"','"+sec.getPhone()+"'," ;

query+="'"+sec.getMobileNumber()+"','"+sec.getSection()+"','11')"; */

/*

 

query="insert into secretary (name, surname, username, password, city, address,";

query+="phone_number, mobile_number, email, section, KA) values('aaa','bbbb','cccc',";

query+="'dddd','eeee','fffff','ggggg','hhhhh','iiiii','1','22')";

*/

isOk=db.testinsertUpdateDeleteQuery(query);

if(isOk)

{

return true;

}

else

{

return false;

}

 

}

 

Η συνάρτηση αυτή βρίσκετε μεσα σε μια κλαση. Μετά αφου φτιαχτει το ερώτημα καλείτε η παρακατω συνάρτηση η οποία παίρνει ως όρισμα αυτο το string και εκτελει το ερώτημα

 

bool DBControl::testinsertUpdateDeleteQuery(std::string qry)

{

const char *qr;

int queryState;

 

qr=qry.c_str();

 

queryState=mysql_query(pconn,qr);

if (!queryState)

{

return true;

}

else

{

return false;

}

}

και αυτη η συνάρτηση βρίσκετε σε άλλη κλάση..

το θέμα είναι ότι το ερώτημα εκτελείτε σωστά μόνο αν το string query το δώσω έτσι

query="insert into secretary (name, surname, username, password, city, address,";

query+="phone_number, mobile_number, email, section, KA) values('aaa','bbbb','cccc',";

query+="'dddd','eeee','fffff','ggggg','hhhhh','iiiii','1','22')";

 

Αν δοκιμάσω καποια από τις 2 πρώτες επιλογές που έχω κάνει δεν εκτελέιτε σωστά και δεν μπορώ να βρώ γιατι συμβαίνει

Ενώ το δοκιμασα και με step run για να δω μηπως δεν παιρνει καλα τις τιμες αλλα μια χαρα τις παιρνει τις τιμες

 

Καμια ιδέα?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δε ξέρω αν εννοουσες κάτι τετοιο αλλα ουτε ετσι δουλευει

 

query="insert into secretary (name, surname, username, password, city, address,";

query+="phone_number, mobile_number, email, section, KA) values('"+name+"',";

query+="\'"+surname+"','"+username+"','"+passwd+"',";

query+="\'"+city+"','"+address+"','"+phone+"'," ;

query+="\'"+mobile+"','"+section+"','11')";

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καντο ετσι

>	std::string
	name("name1"),
	surname("surname1"),
	username("username"),
	passwd("pass1"),
	city("athens"),
	address("address1"),
	mobile("2312231231"),
	phone("2131231"),
	section("section1");

std::string query(
	"INSERT INTO secretary"
	"(name,surname,username,password,city,address,phone_number,mobile_number,email,section,KA)"
	"VALUES(");
query+= '\'';
query+= name;
query+= "\',";

query+= '\'';
query+= surname;
query+= '\'';

query+= '\'';
query+= username;
query+= "\',";

query+= '\'';
query+= passwd;
query+= "\',";

query+= '\'';
query+= city;
query+= "\',";

query+= '\'';
query+= address;
query+= "\',";
printf("%s",query.c_str());
//etc...

 

 

ΥΓ: Φυσικα ειναι καλυτερο να χρησιμοποιησεις το απι της εσκιουελ

ΥΓ1 ενα tutorial

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πως μπορούμε να μετατρέψουμε καποιες τιμες απο ενα vector<string> σε INT?

Οχι ολο το vector αλλά κάποιες τιμές από το vector

 

intReturn = atoi(strConvert.c_str());

 

βρηκα αυτο... ειναι σωστο?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...