MySQL API的基本使用

本文介绍了如何使用MySQL的PrepareStatement功能来高效地访问数据库。详细解释了从初始化MYSQL对象到关闭MYSQL对象的整个流程,并提供了具体的步骤说明及示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Prepare Statement的函数来访问数据库,我是按照以下几个步骤进行的。初学MySQL编程,有什么问题希望可以一起交流。

初始化 MYSQL 对象

MYSQL *mysql_init(MYSQL *mysql)

初始化的时候参数一般设置为NULL

建立连接

MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)

初始化Prepare Statement

MYSQL_STMT *mysql_stmt_init(MYSQL *mysql)

Prepare

int mysql_stmt_prepare(MYSQL_STMT *stmt, const char *stmt_str, unsigned long length)

lengthstmt_str的长度。
返回0表示成功。
(:这里的SQL语句末尾不可以加上“;”,即stmt_str)

绑定参数

my_bool mysql_stmt_bind_param(MYSQL_STMT *stmt, MYSQL_BIND *bind)

stmt_str中要传入参数,就需要通过该函数来实现。比如:

char stmt_str[] = "SELECT * FROM Person WHERE id=? AND name=?";
mysql_stmt_prepare(stmt, stmt_str, (unsigned long)strlen(stmt_str));

MYSQL_BIND params[2];
int id = 1;
char name[] = "Tom";
memset(params, 0, sizeof(params));

params[0].buffer_type = MYSQL_TYPE_LONG;
params[0].buffer = (char *)&id;

params[1].buffer_type = MYSQL_TYPE_STRING;
params[1].buffer = (char *)name;

// 绑定
mysql_stmt_bind_param(stmt, params);

执行SQL

int mysql_stmt_execute(MYSQL_STMT *stmt)

绑定结果输出

my_bool mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)

绑定之后,执行SQL的结果会输出到被绑定的变量中。

保存结果集到MySQL客户端

int mysql_stmt_store_result(MYSQL_STMT *stmt)

SQL语句执行后,结果仍然缓存在Server端,使用mysql_stmt_fetch()只能每次从Server端拉去一条数据,所以可以缓存到Client,然后再获取数据。

获取数据

int mysql_stmt_fetch(MYSQL_STMT *stmt)

每次获取一条数据到my_bool mysql_stmt_bind_result()函数绑定的变量中。有多条数据可以使用循环获取。

释放缓存

my_bool mysql_stmt_free_result(MYSQL_STMT *stmt)

关闭Prepare Statement

my_bool mysql_stmt_close(MYSQL_STMT *)

关闭 MYSQL 对象

void mysql_close(MYSQL *mysql)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值