#include #include /* create table test.datatypes ( id INT PRIMARY KEY AUTO_INCREMENT, testint INT, testfloat FLOAT, testdouble DOUBLE, testdec DECIMAL (10,2), testchar CHAR (30), testblob BLOB (1000), testlblob LONGBLOB, testdate DATE, testtime TIME, testdtime DATETIME, testtstamp TIMESTAMP, testtiny TINYINT, testshort SMALLINT, testbit BIT(64), testllong BIGINT, testvchar VARCHAR(30) ); */ #define INSERT_QUERY "insert into datatypes (testint, testfloat, testdouble, testdec, \ testchar, testblob, testlblob, testdate, testtime, testdtime, testtstamp, \ testtiny, testshort, testbit, testllong, testvchar) \ values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" #define STRING_SIZE 30 int main (void) { MYSQL *mysql; MYSQL_TIME ts[4]; MYSQL_BIND bind[16]; MYSQL_STMT *stmt; int param_count; unsigned char tiny_data; short int short_data; unsigned int int_data; long long ll_data; float float_data; double double_data; char decimal_data[STRING_SIZE]; unsigned long decimal_len; char str_data[STRING_SIZE]; unsigned long str_len; char blob_data[STRING_SIZE]; unsigned long blob_len; char l_blob_data[STRING_SIZE]; unsigned long l_blob_len; char vstr_data[STRING_SIZE]; unsigned long vstr_len; my_bool is_null; unsigned long long bit_data; mysql= mysql_init(NULL); mysql_real_connect(mysql, "127.0.0.1", NULL, NULL, "test", 0, NULL, 0); if (!(stmt= mysql_stmt_init(mysql))) { fprintf(stderr, " mysql_stmt_init() failed\n"); exit(0); } if (mysql_stmt_prepare(stmt, INSERT_QUERY, strlen(INSERT_QUERY))){ fprintf(stderr, "mysql_stmt_prepare() failed\n"); fprintf(stderr, "%s\n", mysql_stmt_error(stmt)); exit(0); } bind[0].buffer_type = MYSQL_TYPE_LONG; bind[0].buffer = (char *)&int_data; bind[0].is_null = &is_null; bind[0].length = 0; bind[1].buffer_type = MYSQL_TYPE_FLOAT; bind[1].buffer = (char *)&float_data; bind[1].is_null = 0; bind[1].length = 0; bind[2].buffer_type = MYSQL_TYPE_DOUBLE; bind[2].buffer = (char *)&double_data; bind[2].is_null = 0; bind[2].length = 0; bind[3].buffer_type = MYSQL_TYPE_NEWDECIMAL; bind[3].buffer = (char *)decimal_data; bind[3].buffer_length = STRING_SIZE; bind[3].is_null = 0; bind[3].length = &decimal_len; bind[4].buffer_type = MYSQL_TYPE_STRING; bind[4].buffer = (char *)str_data; bind[4].buffer_length = STRING_SIZE; bind[4].is_null = 0; bind[4].length = &str_len; bind[5].buffer_type = MYSQL_TYPE_BLOB; bind[5].buffer = (char *)blob_data; bind[5].buffer_length = STRING_SIZE; bind[5].is_null = 0; bind[5].length = &blob_len; bind[6].buffer_type = MYSQL_TYPE_LONG_BLOB; bind[6].buffer = (char *)l_blob_data; bind[6].buffer_length = STRING_SIZE; bind[6].is_null = 0; bind[6].length = &l_blob_len; bind[7].buffer_type = MYSQL_TYPE_DATE; bind[7].buffer = (char*)&ts[0]; bind[7].is_null = 0; bind[7].length = 0; bind[8].buffer_type = MYSQL_TYPE_TIME; bind[8].buffer = (char*)&ts[1]; bind[8].is_null = 0; bind[8].length = 0; bind[9].buffer_type = MYSQL_TYPE_DATETIME; bind[9].buffer = (char*)&ts[2]; bind[9].is_null = 0; bind[9].length = 0; bind[10].buffer_type= MYSQL_TYPE_TIMESTAMP; bind[10].buffer= (char*)&ts[3]; bind[10].is_null= 0; bind[10].length= 0; bind[11].buffer_type = MYSQL_TYPE_TINY; bind[11].buffer = (char *)&tiny_data; bind[11].is_null = 0; bind[11].length = 0; bind[12].buffer_type = MYSQL_TYPE_SHORT; bind[12].buffer = (char *)&short_data; bind[12].is_null = 0; bind[12].length = 0; bind[13].buffer_type = MYSQL_TYPE_BIT; bind[13].buffer = (char *)&bit_data; bind[13].is_null = 0; bind[13].length = 0; bind[14].buffer_type = MYSQL_TYPE_LONGLONG; bind[14].buffer = (char *)&ll_data; bind[14].is_null = 0; bind[14].length = 0; bind[15].buffer_type = MYSQL_TYPE_VAR_STRING; bind[15].buffer = (char *)vstr_data; bind[15].buffer_length = STRING_SIZE; bind[15].is_null = 0; bind[15].length = &vstr_len; printf("MYSQL_TYPE_BIT = %d\n", MYSQL_TYPE_BIT); if (mysql_stmt_bind_param(stmt, bind)) { fprintf(stderr, "param bind failed\n"); fprintf(stderr, "%s\n", mysql_stmt_error(stmt)); exit(0); } ts[0].neg = ts[1].neg = ts[2].neg = ts[3].neg = 0; ts[0].second_part = ts[1].second_part = ts[2].second_part = ts[3].second_part = 0; ts[0].year = ts[1].year = ts[2].year = ts[3].year = 2003; ts[0].month = ts[1].month = ts[2].month = ts[3].month = 04; ts[0].day = ts[1].day = ts[2].day = ts[3].day = 06; ts[0].hour = ts[1].hour = ts[2].hour = ts[3].hour = 11; ts[0].minute = ts[1].minute = ts[2].minute = ts[3].minute = 21; ts[0].second = ts[1].second = ts[2].second = ts[3].second = 31; /* Specify the data values for the first row */ tiny_data = 7; short_data = 42; int_data = 0xFAFBFC9; /* integer */ is_null= 1; /* INSERT INT data as NULL */ ll_data = 0xffe7d5a9c4d1feLL; float_data = 99999.4; double_data = 1234567890.123456; strncpy(decimal_data, "123456.78", STRING_SIZE); /* decimal */ strncpy(str_data, "Popular Open Source DB", STRING_SIZE); /* string */ strncpy(blob_data, "This is BLOB", STRING_SIZE); /* blob */ strncpy(l_blob_data, "This is LONG BLOB", STRING_SIZE); /* longblob */ strncpy(vstr_data, "This is VAR_STR", STRING_SIZE); /* var_string */ decimal_len= strlen(decimal_data); str_len= strlen(str_data); blob_len= strlen(blob_data); l_blob_len= strlen(l_blob_data); vstr_len= strlen(vstr_data); bit_data= 0xDEADBEEF; if (mysql_stmt_execute(stmt)) { fprintf(stderr, "mysql_stmt_execute failed\n"); fprintf(stderr, "%s\n", mysql_stmt_error(stmt)); //exit(0); } printf("insert 1 complete\n"); /* Specify data values for second row, then re-execute the statement */ tiny_data = 127; short_data = 32767; int_data= 0xFDFCFBFA; is_null= 0; /* reset */ ll_data = 9223372036854775807LL; float_data = 911113.34; double_data = 12345678903.1234563; strncpy(decimal_data, "1234.77", STRING_SIZE); /* decimal */ strncpy(str_data, "This is STRING (row 2)", STRING_SIZE); /* string */ strncpy(blob_data, "BLOB (row 2)", STRING_SIZE); /* blob */ strncpy(l_blob_data, "L BLOB (row 2)", STRING_SIZE); /* longblon */ strncpy(vstr_data, "VAR_STR (row 2)", STRING_SIZE); /* var_string */ decimal_len= strlen(decimal_data); str_len= strlen(str_data); blob_len= strlen(blob_data); l_blob_len= strlen(l_blob_data); vstr_len= strlen(vstr_data); bit_data= 0xAFFEDEAD; if (mysql_stmt_execute(stmt)) { fprintf(stderr, " mysql_stmt_execute, 2 failed\n"); fprintf(stderr, " %s\n", mysql_stmt_error(stmt)); exit(0); } printf("insert 2 complete\n"); return 0; }