MySQL API的基本使用

使用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)

你可能感兴趣的:(sql)