linux c 访问mysql

linux版本是red hat 64位的,装的sql版本也是 64位,一开始用 gcc -I /usr/include/mysql connect1.c  -L/usr/lib/mysql -lmysqlclient -o connect1 进行编译

结果死活编译不过去,后来一查原来库文件不在lib 而是在lib64,而且没必要用-I 因为程序里已经包含了,-L也是没必要因为 usr/lib64 编译时会自动寻找

直接gcc  connect1.c -o connect1   -l mysqlclient 就通过了。



1. MYSQL*        mysql_init(MYSQL *);



2. MYSQL*        mysql_real_connect(MYSQL *connection,const char *server_host,const char *sql_user_name,const char *sql_password,const char *db_name,unsigned int port_number,const char *unix_socket_name,unsigned int flags);


3. int            mysql_options(MYSQL *connection,enum option_to_set,const char *argument);


4. void            mysql_close(MYSQL *connection);


5. unsigned int     mysql_errno(MYSQL *connection);


6. char*        mysql_error(MYSQL *connection);


7. int            mysql_query(MYSQL *connection,const char *query);    //执行SQL语句


8. my_ulonglong        mysql_affected_rows(MYSQL *connection);        //检查受查询影响的行数


9. MYSQL_RES*        mysql_store_result(MYSQL *connection);        //从select中提取所有数据


10.my_ulonglong        mysql_num_rows(MYSQL_RES *result);        //得到返回记录的数目


11.MYSQL_ROW        mysql_fetch_row(MYSQL_RES *result);        //从结果结构中提取一行


12.void            mysql_data_seek(MYSQL_RES *result,my_ulonglong offset);        //设置将提取的行


13.MYSQL_ROW_OFFSET    mysql_row_tell(MYSQL_RES *result);        //表示结果集中的当前位置


14.MYSQL_ROW_OFFSET     mysql_row_seek(MYSQL_RES *result,MYSQL_ROW_OFFSET offset);


15.void            mysql_free_result(MYSQL_RES *result);


16.MYSQL_RES*        mysql_use_result(MYSQL *connection);        //提取一行数据


17.unsigned int        mysql_field_count(MYSQL *connection);        //返回结果集字段数目


18.MYSQL_FIELD*        mysql_fetch_field(MYSQL_RES *result);        //将元数据和数据提取        


19.MYSQL_FIELD_OFFSET    mysql_field_seek(MYSQL_RES *result,MYSQL_FIELD_OFFSET offset);


20.char*        mysql_get_client_info(void);


21.char*        mysql_get_host_info(MYSQL *connection);


22.char*        mysql_get_server_info(MYSQL *connection);


23.char*        mysql_info(MYSQL *connection);


24.int            mysql_select_db(MYSQL *connection const char *dbname);


25.int            mysql_shutdown(MYSQL *connection);


实例代码:

#include <stdlib.h>
#include <stdio.h>
#include "mysql/mysql.h"   //主要的头文件


MYSQL conn_ptr;  //建立连接用
MYSQL_RES * res_ptr;  //返回结果
MYSQL_ROW sqlrow;   //每个数据结构
void display_row()
{
   unsigned int field_count = 0;
   while(field_count < mysql_field_count(&conn_ptr))  //返回结果的行数
   {
     printf("%s ", sqlrow[field_count]);
     field_count++;
   }
  printf("\n");
}




int main(int argc, char* argv[])
{
   mysql_init(&conn_ptr);    //初始化链接
   int res;
   if(mysql_real_connect(&conn_ptr,"localhost","root","123456","fanren2",0,NULL,0))  //建立连接
   {
     printf("Connection success\n");
      res = mysql_query(&conn_ptr,"select * from `t_group_buy` where record_id > 770");   //执行sql
     if(!res)
     {
       res_ptr = mysql_use_result(&conn_ptr);   //返回执行sql的结果
       if(res_ptr)
       {
         printf("retrieve %lu rows\n", (unsigned long)mysql_num_rows(res_ptr));  //返回执行结果的行数
         while(sqlrow = mysql_fetch_row(res_ptr))    //逐个取出结果
         {
            printf("Fetched data... \n");
            display_row();
         }
         if(mysql_errno(&conn_ptr))
           {
             fprintf(stderr,"Retrive error: %s\n", mysql_error(&conn_ptr));
           }
           mysql_free_result(res_ptr);  //释放sql结果占有的内存
       }
     }
     else
     {
        fprintf(stderr,"Insert error %d: %s\n", mysql_errno(&conn_ptr),mysql_error(&conn_ptr));
     }
     mysql_close(&conn_ptr);    //释放链接
   }
   else
   {
     printf("Connection failed\n");
     if(mysql_errno(&conn_ptr))  //判断是否有错误
     {
        fprintf(stderr, "connection error %d: %s\n",mysql_errno(&conn_ptr),mysql_error(&conn_ptr));  //获取错误码以及错误描述
     }
   }


   return EXIT_SUCCESS;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值