#include #include #define MY_DATABASE "telcent" #define MY_TABLE "fax" #define MY_HOST "localhost" #define MY_USER "root" #define MY_PASSWORD "" #define MY_FIELD "fax" // BLOB field #define MY_KEY "datet" // PRIMARY KEY int main (int argc, char *argv[]) { if (argc < 2) { std::cerr << "Usage : cgi_image primary_key_value" << std::endl << std::endl; return -1; } std::cout << "Content-type: image/jpeg" << std::endl; mysqlcppapi::Connection con; try { con.set_Host(MY_HOST); con.set_User(MY_USER); con.set_Password(MY_PASSWORD); con.set_Port(3306); con.set_Timeout(60); con.connect(); con.select_database(MY_DATABASE); mysqlcppapi::Query query = con.create_Query(); query << "SELECT " << MY_FIELD << " FROM " << MY_TABLE << " WHERE " << MY_KEY << " = " << argv[1]; mysqlcppapi::Result_Use res = query.use(); mysqlcppapi::Row row=res.fetch_row(); mysqlcppapi::Result_Use::type_vecLengths vecLengths = res.get_lengths(); std::cout << "Content-length: " << vecLengths[0] << std::endl << std::endl; const char* pchRawData = row[0].data(); fwrite(pchRawData, 1, vecLengths[0], stdout); return 0; } catch (mysqlcppapi::ex_BadQuery& er) { std::cerr << "Error: " << er.what() << " " << con.errnum() << std::endl; return -1; } }