MySQL 之 C++ 调用

1.mysql_init()

初始化一个MySQL对象

MYSQL *
mysql_init(MYSQL *mysql)

返回值是初始化的MYSQL *句柄。 如果没有足够的内存来分配新对象,则为NULL。

2.mysql_real_connect()

连接MySQL服务器

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)

MYSQL *mysql 是一个存在的MYSQL结构地址。
host 可以是主机名,也可以是IP地址。
user是用户的MySQL登录ID。
passwd是用户的密码。
db是数据库名称。
port是TCP / IP连接的端口号。
unix_socke是使用的套接字或命名管道。
client_flag的值通常为0。

返回值: 如果连接成功,则为MYSQL *句柄;如果连接失败,则为NULL。

3.mysql_options()

连接前设置选项。
在mysql init()之后和mysql real connect()之前调用mysql options()。

int
mysql_options(MYSQL *mysql,
              enum mysql_option option,
              const void *arg)

返回值: 成功则为零。如果指定未知选项,则为非零。

下面给出一个示例:

MYSQL mysql;

mysql_init(&mysql);
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name");
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
    fprintf(stderr, "Failed to connect to database: Error: %s\n",
          mysql_error(&mysql));
}

4.mysql_real_query()

执行SQL语句。

int
mysql_real_query(MYSQL *mysql,
                 const char *stmt_str,
                 unsigned long length)

mysql real query()执行stmt str所指向的SQL语句,一个字节长的字符串。

返回值: 成功则为零。如果发生错误,则为非零。

5.mysql_store_result()

检索并存储整个结果集。

MYSQL_RES *
mysql_store_result(MYSQL *mysql)

调用mysql_query()之后,必须为成功生成结果集的所有语句(SELECT,SHOW,DESCRIBE,EXPLAIN,CHECK TABLE等)调用mysql_store_result()。对结果集处理完成后,还必须调用mysql_free_result()。
mysql_store_result()将查询的整个结果读取到客户端,分配一个MYSQL_RES结构,并将结果放入该结构中。
如果该语句未返回结果集(例如,如果它是INSERT语句),或者发生错误并且读取结果集失败,则mysql_store_result()返回NULL。
调用mysql_store_result()并获得非空指针的结果后,可以调用mysql_num_rows()来查找结果集中有多少行。可以调用mysql_fetch_row()从结果集中获取行。

返回值: 指向带有结果的MYSQL_RES结构的指针。 如果语句未返回结果集或发生错误,则为NULL

6.mysql_fetch_row()

获取下一个结果集行。

MYSQL_ROW
mysql_fetch_row(MYSQL_RES *result)

行数由mysql_num_fields(result)给出。 如果row保存了对mysql_fetch_row()的调用返回值,则指向这些值的指针可以访问row [0]到row [mysql_num_fields(result)-1]。 NULL指针表示行中的NULL值。

返回值: 下一行的MYSQL_ROW结构,或者NULL。在mysql_store_result()之后使用时,如果没有更多行可检索,则mysql_fetch_row()返回NULL。

7.mysql_fetch_lengths()

返回当前行中所有列的长度。

unsigned long * 
mysql_fetch_lengths(MYSQL_RES *result)

返回结果集中当前行的列的长度。 如果打算复制字段值,则此长度信息有助于优化,因为可以避免调用strlen()。空列和包含NULL值的列的长度为零。

返回值: 一个无符号长整数数组,代表每个列的大小(不包括任何终止的空字节)。 如果发生错误,则为NULL。

下面给出一个示例:

MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;

num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result)))
{
   unsigned long *lengths;
   lengths = mysql_fetch_lengths(result);
   for(i = 0; i < num_fields; i++)
   {
       printf("[%.*s] ", (int) lengths[i],
              row[i] ? row[i] : "NULL");
   }
   printf("\n");
}

8.mysql_fetch_field()

下一个表字段的类型。

MYSQL_FIELD *
mysql_fetch_field(MYSQL_RES *result)

以MYSQL_FIELD结构的形式返回结果集的一列的定义。 重复调用此函数以检索有关结果集中所有列的信息。 当没有剩余的字段时,mysql_fetch_field()返回NULL。每次执行新的SELECT查询时,都会重置mysql_fetch_field()以返回有关第一个字段的信息。

返回值: 当前列的MYSQL_FIELD结构。 如果没有剩余的列,则为NULL。

9.mysql_error()

最近调用的MySQL函数的错误消息。

const char *
mysql_error(MYSQL *mysql)

返回值: 描述错误的以空字符结束的字符串。如果没有发生错误,则为空字符串。

10.mysql_num_rows()

返回结果集中的行数。

uint64_t
mysql_num_rows(MYSQL_RES *result)

11.mysql_num_fields()

返回结果集中的列数。

unsigned int
mysql_num_fields(MYSQL_RES *result)

下面给出一个示例:

MYSQL_RES *result;
unsigned int num_fields;
unsigned int num_rows;

if (mysql_query(&mysql,query_string))
{
    // error
}
else // query succeeded, process any data returned by it
{
    result = mysql_store_result(&mysql);
    if (result)  // there are rows
    {
        num_fields = mysql_num_fields(result);
        // retrieve rows, then call mysql_free_result(result)
    }
    else  // mysql_store_result() returned nothing; should it have?
    {
        if (mysql_errno(&mysql))
        {
           fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
        }
        else if (mysql_field_count(&mysql) == 0)
        {
            // query does not return data
            // (it was not a SELECT)
            num_rows = mysql_affected_rows(&mysql);
        }
    }
}

12.mysql_close()

关闭与服务器的连接。

void
mysql_close(MYSQL *mysql)

参考文献

1.https://dev.mysql.com/doc/c-api/8.0/en/c-api-function-reference.html

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值