Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7563620
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: Mysql/postgreSQL

2011-07-16 21:26:50

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 取出每个字段的数据

 

示例程序:

#include

#include

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;

}

 

 

#include

#include

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;

}

  

 

#include

#include

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;

}

  

 

想想如果要取出人一个id值的记录?

char sql[]=select * from student where id=;

int id=1;

strcat

阅读(3081) | 评论(0) | 转发(3) |
给主人留下些什么吧!~~