|
Loose Connection: msg#00034db.mysql.c++
Hi all, I've a small example that pretends to execute a query (that goes trough a parameter), and send the results to the screen. I've a class AM_Database_Interface that should get the connection, execute and stores the query, but the problem is that my connection only persists within the constructor of this class. After that it just doesn't exists. My makefile is: DBInterface : AM_Database_Interface.o main.o g++ -L/usr/local/mysql/lib/mysql/ -lsqlplus -lmysqlclient -o DBInterface AM_Database_Interface.o main.o main.o : main.cpp AM_Database_Interface.h g++ -c main.cpp -g -I/usr/local/mysql++-1.7.9/sqlplusint/ -I/usr/local/mysql/include/mysql/ AM_Database_Interface.o : AM_Database_Interface.cpp AM_Database_Interface.h g++ -c AM_Database_Interface.cpp -g -I/usr/local/mysql++-1.7.9/sqlplusint/ -I/usr/local/mysql/include/mysql/ clean : rm -f DBInterface main.o AM_Database_Interface.o it returns some warnings: ld: warning: global symbol `_DYNAMIC' has non-global binding: (file /usr/local/lib/libgcc_s.so.1 value=LOCL); ld: warning: global symbol `_PROCEDURE_LINKAGE_TABLE_' has non-global binding: (file /usr/local/lib/libgcc_s.so.1 value=LOCL); ld: warning: global symbol `_GLOBAL_OFFSET_TABLE_' has non-global binding: (file /usr/local/lib/libgcc_s.so.1 value=LOCL); when i excute the output it creates a connection, but then it just vanish. I create a connection, with a real_connection method, because is the only that works in Solaris... my AM_Database_Interface cpp file is: AM_Database_Interface::AM_Database_Interface(MyConnection connection) { std::string dBName_= connection.dBName; std::string dBHost_= connection.dBHost; std::string dBUser_= connection.dBUser; std::string dBPasswd_= connection.dBPasswd; int dBPort_= connection.dBPort; char dBCompress_= connection.dBCompress; int dBConnectionTimeOut_= connection.dBConnectionTimeOut; std::string dBSocketName_= connection.dBSocketName; int dBVar_ = connection.dBVar; Connection con_(use_exceptions); con_.real_connect(dBName_.c_str(), dBHost_.c_str(), dBUser_.c_str(), dBPasswd_.c_str(), dBPort_, dBCompress_, dBConnectionTimeOut_, NULL, dBVar_); // In here connection exists } AM_Database_Interface::~AM_Database_Interface() { con_.close(); } AM_Database_Interface::executeAndStoreQuery(string sQLString, Result &result) { Result resultz; Query query= con_.query(); // Connection is lost here query << sQLString; resultz = query.store(); } my main.cpp file is: #include "AM_Database_Interface.h" //#include <iostream> //#include <string> //#include <iomanip> using namespace std; int main () { MyConnection connection; connection.dBName= "prototipo"; connection.dBHost= "localhost"; connection.dBUser= "root"; connection.dBPasswd= ""; connection.dBPort= 3306; connection.dBCompress= 0; connection.dBConnectionTimeOut= 3600; connection.dBSocketName= ""; connection.dBVar=0; AM_Database_Interface dbInterfaceObj(connection); cout << "Criado o objecto com sucesso!" << endl; ; string str = "select * from SatelliteImages;"; cout << "A SQL Query e :" << str << endl; Result result; dbInterfaceObj.executeAndStoreQuery(str, result); cout << "Registos encontrados : " << result.size() << endl << endl; Row row; cout.setf(ios::left); cout << setw(20) << "component" << setw(20) << "instantiation" << setw(20) << "filename" << setw(20) << "location" << setw(20) << "satellite" << setw(20) << "coordinates" << setw(20) << "dataType" << setw(20) << "info UTC" << setw(20) << "available" << endl; Result::iterator i; for(i=result.begin(); i!=result.end();i++) { row=*i; cout << row[0] << row[1] << row[2] << row[3] << row[4] << row[5] << row[6] << row[7] << row[8] << endl; } return 0; } Can anyone help, please? I send complete code, because i'm a newbie in c++ and i don't know if i've any mistake in that... TIA Próspero |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: Unix Timestamp: 00034, Benjamin Pflugmann |
|---|---|
| Next by Date: | Help with MySQL C++ API: 00034, Mark . Wireman |
| Previous by Thread: | Unix Timestampi: 00034, Mark Riehl |
| Next by Thread: | Re: Loose Connection: 00034, Franz Alt |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |