#include "cmdline.h" #include "printdata.h" #include using namespace std; 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()); // Build a template query to retrieve a stock item given by // item name. mysqlpp::Query query = con.query( "select * from stock where item = %0q"); query.parse(); // Retrieve an item added by resetdb; it won't be there if // tquery* or ssqls3 is run since resetdb. mysqlpp::StoreQueryResult res1 = query.store("Nürnberger Brats"); if (res1.empty()) { throw mysqlpp::BadQuery("UTF-8 bratwurst item not found in " "table, run resetdb"); } // Replace the proper German name with a 7-bit ASCII // approximation using a different template query. query.reset(); // forget previous template query data query << "update stock set item = %0q where item = %1q"; query.parse(); mysqlpp::SimpleResult res2 = query.execute("Nuerenberger Bratwurst", res1[0][0].c_str()); // Print the new table contents. print_stock_table(query); } catch (const mysqlpp::BadQuery& er) { // Handle any query errors cerr << "Query error: " << er.what() << endl; return -1; } catch (const mysqlpp::BadConversion& er) { // Handle bad conversions cerr << "Conversion error: " << er.what() << endl << "\tretrieved data size: " << er.retrieved << ", actual size: " << er.actual_size << endl; return -1; } catch (const mysqlpp::Exception& er) { // Catch-all for any other MySQL++ exceptions cerr << "Error: " << er.what() << endl; return -1; } return 0; }