65,187
社区成员




#include <stdio.h>
#include <mysql.h>
#include <string.h>
int main(void)
{
MYSQL *conn = mysql_init(NULL); //初始化服务器句柄
/*登陆服务器*/
if(!mysql_real_connect(conn, "localhost", "root", "", "test", 0, NULL, 0))
{
fprintf(stderr, "mysql_real_connect: %s\n", mysql_error(conn));
return -1;
}
MYSQL_STMT *stmt = mysql_stmt_init(conn); //创建MYSQL_STMT句柄
char *query = "select * from stu where id=?;";
if(mysql_stmt_prepare(stmt, query, strlen(query)))
{
fprintf(stderr, "mysql_stmt_prepare: %s\n", mysql_error(conn));
return -1;
}
int id = 1;
char name[20];
MYSQL_BIND params[2];
memset(params, 0, sizeof(params));
params[0].buffer_type = MYSQL_TYPE_LONG;
params[0].buffer = &id;
params[1].buffer_type = MYSQL_TYPE_STRING;
params[1].buffer = name;
params[1].buffer_length = sizeof(name);
mysql_stmt_bind_param(stmt, params);
mysql_stmt_bind_result(stmt, params); //用于将结果集中的列与数据缓冲和长度缓冲关联(绑定)起来
mysql_stmt_execute(stmt); //执行与语句句柄相关的预处理
mysql_stmt_store_result(stmt); //以便后续的mysql_stmt_fetch()调用能返回缓冲数据
while(mysql_stmt_fetch(stmt) == 0) //返回结果集中的下一行
printf("%d\t%s\n", id, name);
mysql_stmt_close(stmt);
mysql_close(conn);
return 0;
}
name.c_str() name.size()
你的例子太简单了,没有必要换