mysql  c   API

安装开发包(mysql-connector-c-6.0.2-linux-glibc2.3-x86-32bit.tar.gz)

头文件和动态库

mysql-connector-c-6.0.2-linux-glibc2.3-x86-32bit.tar.gz

1.tar -xvzf mysql-connector-c-6.0.2-linux-glibc2.3-x86-32bit.tar.gz -C /usr/local

2.mv mysql-connector-c-6.0.2-linux-glibc2.3-x86-32bit mysql

3.编译命令:
gcc
-I/usr/local/mysql/include -L/usr/local/mysql/lib -lmysqlclient -o filename   filename.c

4.export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib //mysql库文件的路径该LD_LIBRARY_PATH

5.设置一个符号连接   ln -s /var/lib/mysql/mysql.sock /tmp

 

mysql服务默认的端口号3306

在源文件中加入一个头文件 #include<mysql.h>

mysql中的一个新的数据结构MYSQL :服务器的句柄标识符号

MYSQL *conn //声明一个服务器的句柄

 

初始化服务器的句柄

    MYSQL* mysql_init(void *)

    conn=mysql_init(NULL);

连接数据库

void *mysql_real_connect(MYSQL* conn,char* servername,char * username,char* password,char* dbname,int prot,void* NULL,int fd)

参数说明:

    MYSQL* conn//上面初始化的服务器句柄

    char* servername//数据库服务所在的服务器的名称或IP地址

    char * username//登入数据的用户

    char* password//用户的密码

    char* dbname//具体的数据库名

    int prot//服务端口号3306 ,也可以写0

    NULL

    0

返回值NULL 表连接失败

关闭连接:mysql_close(MYSQL* conn)  释放资源空间

错误提示函数char* mysql_error(MYSQL*conn);获取连接数据库可能发生的错误信息

执行语句命令

mysql_query(MYSQL* conn,char* sql)char * sql:sql语句名另,也可以是mysql操作命令

select  *  from   student

存放查询结果集的数据结构MYSQL_RES

代表记录的一个安全行MYSQL_ROW

将语句执行额结果存放到MYSQL_RES

MYSQL_RES* mysql_store_result(MYSQL*)

 

MYSQL_RES结构中存放的记录总数mysql_num_rows

MYSQL_RES结构中存放的记录字段数mysql_num_fields

MYSQL_RES存储结构中去数据暂时保存到MYSQL_ROW MYSQL_ROW mysql_fetch_row(MYSQL_RES *)

 

通过循环从MYSQL_ROW 取出每个字段的数据

 

示例程序:
/**connect_mysql.c*/

#include<stdio.h>

#include<mysql.h>
#include<string.h>

int main(void)

{

  MYSQL * conn=NULL;

  conn=mysql_init(NULL);

  if(mysql_real_connect(conn,"localhost","root","123456","newer",3306,NULL,0)==NULL)

   {

     printf("coonect eror is %s\n",mysql_error(conn));

     return -1;

   }

  printf("connect success\n");

  mysql_close(conn);

  return 0;

}

 

/*create database,table,insert,SELECT*/

#include<mysql.h>

#include<stdio.h>

int main()

{

   MYSQL * conn=NULL;

   conn=mysql_init(NULL);

   if(mysql_real_connect(conn,"localhost","root","123456","newer",3306,NULL,0)==NULL)

   {

      printf("connect error %s\n",mysql_error(conn));

      return -1;

    }

  mysql_query(&conn,"drop database if exists  newer3;");

  mysql_query(&conn,"create database newer3;");

  mysql_query(&conn,"use newer3;");

  mysql_query(&conn,"create table student(id integer primary key,name varchar(10));");

  mysql_query(&conn,"insert into student values(1,'aaaaa');");

  mysql_query(&conn,"insert into student values(2,'bbbbbb');");

  mysql_close(&conn);

   return 0;

}

  

/*demo.c*/

#include<stdio.h>

#include<string.h>

int main()

{

   MYSQL * conn=NULL;

   conn=mysql_init(NULL);

   if(mysql_real_connect(conn,"localhost","root","123456","newer3",0,NULL,0)==NULL)

   {

     printf("error is %s\n",mysql_error(conn));

     return -1;

   }

   mysql_query(&conn,"select * from student;");

   MYSQL_RES *res;//声明存储结构

   res=mysql_store_result(conn);

   int row1=mysql_num_rows(res);

   int col=mysql_num_fields(res);

   printf("row=%d\tcol=%d\n",row1,col);

   MYSQL_ROW row;//成名取数据的结构,不是指针

   int i;

   while((row=mysql_fetch_row(res))!=NULL)

    {//判断是否数据全部去完,函数返回NULL表示数据去完

        for(i=0;i<col;i++)

     {

       // printf("%s\t%s\n",row[0],row[1]);

         printf("%s\t",row[i]);

        }

      printf("\n");

    }

    mysql_free_result(res);

    mysql_close(&conn);

   return 0;

}

09-17 20:02