#include #include #include #include #include void dump_result_set(cp_result_set *rs) { if (rs) { int i; cp_vector *r; while ((r = cp_result_set_next(rs)) != NULL) { for (i = 0; i < rs->field_count; i++) printf(" | %s", cp_string_tocstr(cp_vector_element_at(r, i))); printf(" |\n"); } cp_result_set_destroy(rs); } } void do_prepared(cp_db_connection *conn, int id, char *filename) { cp_db_statement *stmt; int rc; cp_field_type ftype[8] = { CP_FIELD_TYPE_INT, CP_FIELD_TYPE_FLOAT, CP_FIELD_TYPE_CHAR, CP_FIELD_TYPE_VARCHAR, CP_FIELD_TYPE_TIME, CP_FIELD_TYPE_DATE, CP_FIELD_TYPE_BLOB, CP_FIELD_TYPE_BOOLEAN }; short pbool = 1; int pint = 100; float pfloat = 0.1234567890; char *pchar = "C"; char *pvchar = "hello"; struct timeval timeofday; cp_timestampz *tmz; cp_string *pblob; char *blobstr = "quack quack"; cp_vector *prm = cp_vector_create(8); int idx = 0; gettimeofday(&timeofday, NULL); tmz = cp_timestampz_create(&timeofday, 60); pblob = cp_string_create(blobstr, strlen(blobstr)); stmt = cp_db_connection_prepare_statement(conn, 8, ftype, "INSERT INTO sizetbl (fld_int, fld_flt, fld_chr, " "fld_vchr, fld_tm, fld_date, fld_blob, " "fld_bool) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); if (stmt == NULL) { cp_error(CP_DBMS_STATEMENT_ERROR, "statement failed"); return; } cp_vector_set_element(prm, idx++, &pint); cp_vector_set_element(prm, idx++, &pfloat); cp_vector_set_element(prm, idx++, pchar); cp_vector_set_element(prm, idx++, pvchar); cp_vector_set_element(prm, idx++, tmz); cp_vector_set_element(prm, idx++, tmz); cp_vector_set_element(prm, idx++, pblob); cp_vector_set_element(prm, idx++, &pbool); rc = cp_db_connection_execute_statement(conn, stmt, prm, NULL); printf("prepared statment: %d\n", rc); cp_db_connection_close_statement(conn, stmt); } int main(int argc, char *argv[]) { cp_data_source *ds = NULL; cp_db_connection *conn = NULL; char *filename; int id; char *host = "localhost"; int port = 0; char *login = "test"; char *password = NULL; char *db_name = "test"; cp_log_init("test_db_prepared_stmt.log", LOG_LEVEL_DEBUG); cp_db_init(); if (cp_dbms_load_driver("mysql")) { cp_error(CP_DBMS_NO_DRIVER, "can\'t load driver"); goto DONE; } ds = cp_dbms_get_data_source("mysql", host, port, login, password, db_name); if (ds == NULL) { cp_error(CP_DBMS_CONNECTION_FAILURE, "can\'t connect"); goto DONE; } conn = cp_data_source_get_connection(ds); if (conn == NULL) { cp_error(CP_DBMS_CONNECTION_FAILURE, "can\'t connect"); goto DONE; } do_prepared(conn, id, filename); cp_db_connection_close(conn); DONE: if (conn) cp_db_connection_destroy(conn); if (ds) cp_data_source_destroy(ds); cp_db_shutdown(); cp_log_close(); return 0; }