Download MySQL++ v3.2.2 User Manual
Transcript
MySQL++ v3.2.2 User Manual
// The only possibility left is that it's divisible by an
// odd number that's less than or equal to its square root.
for (int i = 3; i <= sqrt(double(s.num)); i += 2) {
if ((s.num % i) == 0) {
return false;
}
}
return true;
}
}
};
int
main(int argc, char *argv[])
{
// Get database access parameters from command line
mysqlpp::examples::CommandLine cmdline(argc, argv);
if (!cmdline) {
return 1;
}
try {
// Establish the connection to the database server.
mysqlpp::Connection con(mysqlpp::examples::db_name,
cmdline.server(), cmdline.user(), cmdline.pass());
// Collect the stock items with prime quantities
std::vector<stock> results;
mysqlpp::Query query = con.query();
query.store_if(results, stock(), is_prime());
// Show the results
print_stock_header(results.size());
std::vector<stock>::const_iterator it;
for (it = results.begin(); it != results.end(); ++it) {
print_stock_row(it->item.c_str(), it->num, it->weight,
it->price, it->sDate);
}
}
catch (const mysqlpp::BadQuery& e) {
// Something went wrong with the SQL query.
std::cerr << "Query failed: " << e.what() << std::endl;
return 1;
}
catch (const mysqlpp::Exception& er) {
// Catch-all for any other MySQL++ exceptions
std::cerr << "Error: " << er.what() << std::endl;
return 1;
}
return 0;
}
I doubt anyone really needs to select rows from a table that have a prime number in a given field. This example is
meant to be just barely more complex than SQL can manage, to avoid obscuring the point. That point being, the
Query::store_if() call here gives you a container full of results meeting a criterion that you probably can’t
express in SQL. You will no doubt have much more useful criteria in your own programs.
If you need a more complex query than the one store_if() knows how to build when given an SSQLS
examplar, there are two overloads that let you use your own query string. One overload takes the query string
directly, and the other uses the query string built with Query’s stream interface.
28