#include #include "mysql.h" #define SELECT123 "SELECT DATE('1000-00-00') * 1" int main() { MYSQL *conn; MYSQL_STMT *stmt; MYSQL_RES *meta; MYSQL_FIELD *field; MYSQL_BIND bind = {0}; int res; unsigned long len; char buf[21] = {0}; double d=-1.0; conn= mysql_init(NULL); conn= mysql_real_connect(conn, "127.0.0.1", "root", "", "test", 3306, 0, 0); if (!conn) { fprintf(stderr, "Cannot connect\n"); exit(1); } stmt= mysql_stmt_init(conn); res= mysql_stmt_prepare(stmt, SELECT123, strlen(SELECT123)); meta= mysql_stmt_result_metadata(stmt); field= mysql_fetch_field_direct(meta, 0); printf("type=%d\n", field->type); mysql_free_result(meta); bind.buffer_type= MYSQL_TYPE_STRING; bind.buffer= &buf; bind.buffer_length= 20; bind.length= &len; mysql_stmt_bind_result(stmt, &bind); mysql_stmt_execute(stmt); mysql_stmt_fetch(stmt); printf("Result=[%s]\n", buf); mysql_stmt_close(stmt); stmt= mysql_stmt_init(conn); res= mysql_stmt_prepare(stmt, SELECT123, strlen(SELECT123)); memset(&bind, 0, sizeof(MYSQL_BIND)); bind.buffer_type= MYSQL_TYPE_DOUBLE; bind.buffer= &d; bind.buffer_length= 0; bind.length= 0; mysql_stmt_bind_result(stmt, &bind); mysql_stmt_execute(stmt); mysql_stmt_fetch(stmt); printf("Result=[%.2f]\n", d); mysql_stmt_close(stmt); { MYSQL_ROW row; unsigned int num_fields; unsigned int i; res= mysql_query(conn, SELECT123); meta= mysql_store_result(conn); while ((row = mysql_fetch_row(meta))) { unsigned long *lengths; lengths = mysql_fetch_lengths(meta); printf("[%.*s]\n", (int) lengths[0], row[0] ? row[0] : "NULL"); printf("[len=%d][%.2f]\n", lengths[0], row[0]); } } mysql_close(conn); return 0; }