mysql 客户端简单搭建

主要使用的是mysql开发包中的api接口

操作流程

1.初始化mysql操作句柄

    MYSQL *mysql_init(MYSQL *mysql);

        对传人的句柄进行初始化

        若传入的句柄为NULL,则内部会动态申请空间,进行初始化,并返回句柄首地址

        返回值:若失败则返回NULL

2.链接mysql服务器

        MYSQL *mysql real connect(MYSQL *mysql, char *host, char *user, char *pass, char *dbname,
        int port, char *unix _socket, int client_flag)
        mysql:初始化完成的mysql句柄;

        host:用户名;

        port:端口,默认0为3306端口,是mysql服务的端口;

        pass: 密码;

        dbname:要操作的库名称

        unix socket:套接字或管道文件名-通常置NULL

        client flag: 客户端的操作标志,通常置0;

        返回值:成功则返回句柄首地址,失败返回NULL

3.设置客户端字符集(通常是与服务器保持一致,使用utf3)
         int mysql_set character_set(MY sQL *mysal, char *name)
         mysql:操作句柄;

         name:宇符集名称,通常是"utf8”

         返回值:成功返回0;失败返回非0;

4.选择要操作的数据库(切换操作的库)
          int mysql_select_db(MYsQL *mysq. char *dbname):

5.将sql语句发送给服务器,并执行sql语句
          int mysql_query(MY SQL *mysql, char *sql);
          mysql:操作句柄;

          sql:对数据库中的数据进行操作的sql语句

          返回值:成功返回0:失败返回非0

          语句有没有执行成功,决定了当前的操作是否完成了

6.增改删操作,只要语句执行成功,就OK,但是如果是查询语向,因为查询的话语向执行成功了,还需要获取查询结果

         将查询结果保存到本地
         MYSQL RES *mysql store result(MYSQL *mysal);                                                                            mysq:操作句柄;

        返回值:成功返回结果集的结构首地址,失败返回NULL
        将结果集保存到本地与执行语句这一步操作,若使用的是同一个操作句柄则存任线程安全              问题        

        获取结果集中的结果行数和列数
        int mysal num rows(MYSQL RES *res);

        获取结果有多少行int mysql num fields(MYSQL RES *res);获取一行中有多少列

        遍历结果集,逐条取出数据
        MYSQL_ ROW mysql fetch row(MY SQL_ RES *res);
                注意:这个函数或者说res 内部记录了当前的读写位置,只需要不断的调用,就可以逐条取出数据
                这个返回值是个字符指针数组char *arr0,将一行中的多列进行扁平化存储,每一个元素都是一列数据

        释放结果集
        int mysql_ free_ result(MYSQL_ RES *res);

7. 关闭容户端连接,释放句柄资源

          int mysql close(MYSQL *mysql);

代码展示

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

int main()
{
  //初始化mysql句柄
  MYSQL *mysql = mysql_init(NULL);
  if(mysql == NULL)
  {
    printf("mysql init error !");
    return -1;
  }
  //选择mysql服务器进行链接
  if(mysql_real_connect(mysql,"0.0.0.0","root","","test",0,NULL,0) == NULL)
  {
    printf("connect failed :%s \n",mysql_error(mysql));
    mysql_close(mysql);
  }
  //设置字符集
  int ret;
  ret = mysql_set_character_set(mysql,"utf8");
  if(ret != 0)
  {
    printf("set character failed :%s \n",mysql_error(mysql));
  }
  //选择操作的数据库
  mysql_select_db(mysql,"test");
  //执行语句
  const char* select_sql = "select * from student;";
  ret = mysql_query(mysql,select_sql);
  if(ret != 0)
  {
    printf("query failed :%s \n",mysql_error(mysql));
    mysql_close(mysql);
    return -1;
  }
  //查询语句执行结果
  MYSQL_RES* res = mysql_store_result(mysql);
  if(res == NULL)
  {
    printf("store result  failed :%s \n",mysql_error(mysql));
    mysql_close(mysql);
    return -1;
  }
  int num_row = mysql_num_rows(res);
  int num_col = mysql_num_fields(res);
  for(int i = 0 ; i < num_row;i++)
  {
    MYSQL_ROW row = mysql_fetch_row(res);
    for(int j = 0 ;j < num_col;j++){
      printf("%-15s",row[j]);
    }
    printf("\n");
  }
  mysql_free_result(res);
  mysql_close(mysql);
}

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

int main()
{
  //初始化mysql句柄
  MYSQL *mysql = mysql_init(NULL);
  if(mysql == NULL)
  {
    printf("mysql init error !");
    return -1;
  }
  //选择mysql服务器进行链接
  if(mysql_real_connect(mysql,"0.0.0.0","root","","test",0,NULL,0) == NULL)
  {
    printf("connect failed :%s \n",mysql_error(mysql));
    mysql_close(mysql);
  }
  //设置字符集
  int ret;
  ret = mysql_set_character_set(mysql,"utf8");
  if(ret != 0)
  {
    printf("set character failed :%s \n",mysql_error(mysql));
  }
  //选择操作的数据库
  mysql_select_db(mysql,"test");
  //执行语句
  const char* select_sql = "select * from student;";
  ret = mysql_query(mysql,select_sql);
  if(ret != 0)
  {
    printf("query failed :%s \n",mysql_error(mysql));
    mysql_close(mysql);
    return -1;
  }
  //查询语句执行结果
  MYSQL_RES* res = mysql_store_result(mysql);
  if(res == NULL)
  {
    printf("store result  failed :%s \n",mysql_error(mysql));
    mysql_close(mysql);
    return -1;
  }
  int num_row = mysql_num_rows(res);
  int num_col = mysql_num_fields(res);
  for(int i = 0 ; i < num_row;i++)
  {
    MYSQL_ROW row = mysql_fetch_row(res);
    for(int j = 0 ;j < num_col;j++){
      printf("%-15s",row[j]);
    }
    printf("\n");
  }
  mysql_free_result(res);
  mysql_close(mysql);
}

           17f054db872d4d61974c1fcc22019371.png

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五毛变向.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值