27 for ( iattempt = 0; iattempt < 3; iattempt++ )
29 ret = mysql_real_connect( m_conn, host.c_str(), user.c_str(), passwd.c_str(),
33 std::cout <<
"DatabaseSvc: Connected to MySQL database" << std::endl;
38 std::cout <<
"Couldn't connect to MySQL database. Trying again." << std::endl;
43 if ( ret == 0 && iattempt == 2 )
throw (
char*)mysql_error( m_conn );
45 }
catch ( std::exception& e )
48 cerr <<
"Error in MySQL session initialization!" << endl;
49 cerr <<
"*** std::exception caught:" << endl;
50 cerr <<
"*** error message:" << e.what() << endl;
86 int status = mysql_real_query( m_conn, sql.c_str(), sql.length() );
91 std::cerr <<
"MySQL error: MySQL server has gone away" << std::endl;
98 std::cout <<
"Connected to MySQL database " << std::endl;
100 status = mysql_real_query( m_conn, sql.c_str(), sql.length() );
106 cerr <<
"Query " << sql <<
" failed: " << mysql_error( m_conn ) << endl;
112 cerr <<
"Could not execute query: " << mysql_error( m_conn ) << endl;
136 int status = mysql_real_query( m_conn, sql.c_str(), sql.length() );
141 std::cerr <<
"MySQL error: MySQL server has gone away" << std::endl;
148 std::cout <<
"Connected to MySQL database " << std::endl;
150 status = mysql_real_query( m_conn, sql.c_str(), sql.length() );
156 cerr <<
"Query " << sql <<
" failed: " << mysql_error( m_conn ) << endl;
161 MYSQL_RES* result = mysql_store_result( m_conn );
165 int num_fields = mysql_num_fields( result );
167 if ( num_fields > 0 )
170 fields = mysql_fetch_fields( result );
173 while ( ( row = mysql_fetch_row( result ) ) )
175 unsigned long* lengths;
176 lengths = mysql_fetch_lengths( result );
179 for ( field = 0; field < num_fields; field++ )
181 if ( row[field] != 0 )
183 unsigned long field_len = lengths[field];
185 if ( fields[field].
type == FIELD_TYPE_BLOB )
187 new_record =
new char[field_len];
188 memcpy( new_record, row[field], field_len );
192 new_record =
new char[field_len + 1];
193 strcpy( new_record, row[field] );
196 ( *dbrec )[fields[field].name] = new_record;
198 else { ( *dbrec )[fields[field].name] =
nullptr; }
200 records.push_back( dbrec );
203 mysql_free_result( result );
206 return records.size();
210 cerr <<
"Could not execute query: " << mysql_error( m_conn ) << endl;