mysql c api,mysql c++ api

mysql c api,mysql c++ api,MySQL的C语言API接口

本文主要介绍MySQL的C语言API接口,有需要的朋友可以参考一下。

1、首先当然是连接数据库,函数原型如下:

MYSQL * STDCALL MYSQL _ real _ connect(MYSQL * MYSQL,const char *host,

const char *用户,

const char *passwd

常量char *db,

无符号int端口,

const char *unix_socket,

无符号长client flag);

第一个参数MYSQL是C api中非常重要的变量,它的内存非常丰富,包括port、dbname、charset等基本的连接参数。它还包含了一个名为st_mysql_methods的结构变量,里面保存了很多函数指针,在数据库连接成功后的各种数据操作中都会调用到这些函数指针。mysql_real_connect函数中的参数基本都是为了名和意。

2.成功连接到数据库后,您可以执行sql语句。使用mysql_query。

int STDCALL MYSQL _ query(MYSQL * MYSQL,const char * q);

第一个参数上面已经介绍过了,第二个参数是要执行的sql语句。

该功能总体上有两个步骤:

(1)发送sql语句,其实只是一个发送sql语句的套接字,加上mysql固定的协议头。懒人去看了源代码,抓到包如下:

0000 19 00 00 00 0373 65 6c 65 63 74 20 61 70 70 5f.选择应用程序

0010 6e 61 6d 65 20 66 72 6f 6d 20 61 70 70应用程序中的名称

红色部分是协议,前两位实际上是数据包的长度。具体协议没有研究过。

(2)然后结果被接受。这里会调用MYSQL变量中ST _ MYSQL _ methods中的read_query_result函数指针。

3、获取结果

sql执行后,如果是查询语句,当然要读取数据。如果是update、insert等语句,那么就可以看出操作是否成功。我们来看看如何得到查询结果:如果mysql_query返回成功,那么我们将通过函数mysql_store_result读取结果。原型如下:

MYSQL _ RES * STDCALL MYSQL _ store _ result(MYSQL * MYSQL);

该函数在MYSQL变量中调用ST _ MYSQL _ methods中的read_rows函数指针,得到查询结果。同时这个函数会返回一个类似MYSQL_RES的变量,主要用来保存查询结果。同时,这个函数malloc创建了一个内存空间来存储被查询的数据,所以一定要记住free(结果),否则肯定会造成内存泄漏。执行mysql_store_result后,数据已经在MYSQL_RES变量中了。下面这个api基本上是读取mysql _ res中的数据,比如mysql_fetch_row函数读取查询结果的一行。功能原型如下

MYSQL _ ROW STDCALL MYSQL _ fetch _ ROW(MYSQL _ RES * result);

它会返回一个MYSQL_ROW变量,实际上是char **。就当二维数组用吧。API有很多,就不一一介绍了。大部分信息都在两个结构MYSQL_RES MYSQL中。详情请参考mysql官网:http://dev.mysql.com/doc/refman/5.1/en/c.html突然发现官网上的信息如此全面,似乎比任何一本书都好。

这里有一个例子:

# includestdio.h

#includestdlib.h

#includestring.h

#includemysql/mysql.h

#定义MAX_COLUMN_LEN 32

int main(int argc,char *argv[])

{

MYSQL my _ connection

MYSQL _ RES *结果;

MYSQL _ ROW sql _ row

MYSQL _ FIELD * fd

char COLUMN[最大列长度][最大列长度];

int res

MySQL _ init(my _ connection);

if(MySQL _ real _ connect(my _ connection,' 127.0.0.1 ',' user ',' password ',' data name ',3306,NULL,0))

{

perror('连接');

res=mysql_query(my_connection,' select * from app ');//查询

如果(!res)

{

result=MySQL _ store _ result(my _ connection);//将查询的数据保存到结果中

如果(结果)

{

int i,j;

printf('结果号为%lu\n ',(无符号long)MySQL _ num _ rows(result));

for(I=0;fd=mysql_fetch_field(结果);I )//获取列名

{

bzero(列[i]),sizeof(列[I]);

strcpy(列[i],FD-name);

}

j=mysql_num_fields(结果);

for(I=0;ij;我)

{

printf('%s\t ',列[I]);

}

printf(' \ n ');

while(SQL _ row=MySQL _ fetch _ row(result))//获取具体数据

{

for(I=0;ij;我)

{

printf('%s\t ',SQL _ row[I]);

}

printf(' \ n ');

}

}

}

其他

{

perror(' select ');

}

}

其他

{

perror('连接:错误');

}

MYSQL _ free _ result(MYSQL _ RES * result);//释放结果资源

MySQL _ close(my _ connection);//断开连接

}

上面的例子是从一个表中查找数据,然后输出它。要插入或更新,只需要修改特定的sql。具体操作由函数mysql_query完成。现在来说说编制方法。这里我们需要。h和。所以图书馆。我们可以在http://dev.mysql.com/downloads/connector/c/6.0.html.下载Connector/C简单的办法就是:把包含的东西复制到/usr/include/mysql/下,这样编译的时候就不用加-I了,然后把lib下的东西复制到/usr/lib/下。

Gcc具体编译方法:gcc ***。首席执行官*** -lmysqlclient

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • pymysql菜鸟教程,pymysql 使用
  • pymysql菜鸟教程,pymysql 使用,pymysql模块使用简介与示例
  • mysql锁实现,mysql锁算法
  • mysql锁实现,mysql锁算法,MySQL锁机制与用法分析
  • mysql连接报错10061,mysql连接错误10060
  • mysql连接报错10061,mysql连接错误10060,MYSQL无法连接 提示10055错误的解决方法
  • mysql连接报10060错误,mysql连接报错10055
  • mysql连接报10060错误,mysql连接报错10055,MySQL连接异常报10061错误问题解决
  • mysql辅助索引和主键索引,mysql 主键 外键 索引
  • mysql辅助索引和主键索引,mysql 主键 外键 索引,MySQL索引之主键索引
  • MySQL语句大全,mysql常见语句总结
  • MySQL语句大全,mysql常见语句总结,MySQL语句整理及汇总介绍
  • mysql触发器的使用方法实验报告,mysql中触发器的使用
  • 留言与评论(共有 条评论)
       
    验证码: