首页新闻找找看学习计划

C++,关于使用MySQL预处理API实现ExecuteQuery()方法的问题

0
悬赏园豆:20 [待解决问题]

看了mysql的官方文档,现在还是不大明白使用mysql_stmt_bind_result()绑定结果到bind数组,以及绑定后如何为bind.buffer预分配内存空间究竟是怎么一回事。官方给出的示例是这样的:

 1 memset(bind, 0, sizeof(bind));
 2 
 3 /* INTEGER COLUMN */
 4 bind[0].buffer_type= MYSQL_TYPE_LONG;
 5 bind[0].buffer= (char *)&int_data;
 6 bind[0].is_null= &is_null[0];
 7 bind[0].length= &length[0];
 8 bind[0].error= &error[0];
 9 
10 /* STRING COLUMN */
11 bind[1].buffer_type= MYSQL_TYPE_STRING;
12 bind[1].buffer= (char *)str_data;
13 bind[1].buffer_length= STRING_SIZE;
14 bind[1].is_null= &is_null[1];
15 bind[1].length= &length[1];
16 bind[1].error= &error[1];
17 
18 /* SMALLINT COLUMN */
19 bind[2].buffer_type= MYSQL_TYPE_SHORT;
20 bind[2].buffer= (char *)&small_data;
21 bind[2].is_null= &is_null[2];
22 bind[2].length= &length[2];
23 bind[2].error= &error[2];
24 
25 /* TIMESTAMP COLUMN */
26 bind[3].buffer_type= MYSQL_TYPE_TIMESTAMP;
27 bind[3].buffer= (char *)&ts;
28 bind[3].is_null= &is_null[3];
29 bind[3].length= &length[3];
30 bind[3].error= &error[3];
31 
32 /* Bind the result buffers */
33 if (mysql_stmt_bind_result(stmt, bind))
34 {
35   fprintf(stderr, " mysql_stmt_bind_result() failed\n");
36   fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
37   exit(0);
38 }
39 
40 /* Now buffer all results to client (optional step) */
41 if (mysql_stmt_store_result(stmt))
42 {
43   fprintf(stderr, " mysql_stmt_store_result() failed\n");
44   fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
45   exit(0);
46 }

 

希望有大牛能帮我解惑。

SunCosmo的主页 SunCosmo | 初学一级 | 园豆:184
提问于:2016-03-18 14:41
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册