#include #include #include #include /* DROP TABLE IF EXISTS testfloat; CREATE TABLE `testfloat` (`val` float NOT NULL); */ #define PREPARE_SQL "INSERT INTO testfloat(val) VALUES (?);" int main() { MYSQL mysql; MYSQL_BIND bind[1]; float float_data; my_bool is_null; //float_data = 0x7F800001; //float_data = -FLT_MAX; mysql_init(&mysql); if (!mysql_real_connect(&mysql,"127.0.0.1","root","","test",13000,NULL,0)) { fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&mysql)); return 1; } if (mysql_query(&mysql, "DROP TABLE IF EXISTS testfloat")) { fprintf(stderr, "Failed to drop: Error: %s\n", mysql_error(&mysql)); goto end; } if (mysql_query(&mysql, "CREATE TABLE `testfloat` (`val` float not null);")) { fprintf(stderr, "Failed to create: Error: %s\n", mysql_error(&mysql)); goto end; } printf("Client=%s\n", mysql_get_client_info()); printf("Server=%s\n", mysql_get_server_info(&mysql)); { MYSQL_STMT * stmt = mysql_stmt_init(&mysql); if (!stmt) { fprintf(stderr, "Failed to init stmt: Error: %s\n", mysql_error(&mysql)); goto end; } if (mysql_stmt_prepare(stmt, PREPARE_SQL, sizeof(PREPARE_SQL) - 1)) { fprintf(stderr, "Failed to prepare stmt: Error: %s\n", mysql_stmt_error(stmt)); goto end2; } bind[0].buffer_type = MYSQL_TYPE_FLOAT; bind[0].buffer= (char *)&float_data; bind[0].is_null= &is_null; bind[0].length= 0; if (mysql_stmt_bind_param(stmt, bind)) { fprintf(stderr, " mysql_stmt_bind_param() failed\n"); fprintf(stderr, " %s\n", mysql_stmt_error(stmt)); exit(0); } float_data = -FLT_MAX; is_null = 0; if (mysql_stmt_execute(stmt)) { fprintf(stderr, "Failed to execute stmt: Error: %s\n", mysql_stmt_error(stmt)); goto end2; } { MYSQL_FIELD * field = NULL; MYSQL_RES * res = mysql_stmt_result_metadata(stmt); if (!res) { fprintf(stderr, "Failed to get metadata: Error: %s\n", mysql_stmt_error(stmt)); goto end2; } while ((field = mysql_fetch_field(res))) { printf("name=%s\n", field->name); // printf("catalog=%s\n", field->catalog); } mysql_free_result(res); } end2: mysql_stmt_close(stmt); } end: mysql_close(&mysql); return 0; }