• 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
    #include
    #include

    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);
    }

    1. #include
    2. #include
    3. #include
    4. int main()
    5. {
    6.   //初始化mysql句柄
    7.   MYSQL *mysql = mysql_init(NULL);
    8.   if(mysql == NULL)
    9.   {
    10.     printf("mysql init error !");
    11.     return -1;
    12.   }
    13.   //选择mysql服务器进行链接
    14.   if(mysql_real_connect(mysql,"0.0.0.0","root","","test",0,NULL,0) == NULL)
    15.   {
    16.     printf("connect failed :%s \n",mysql_error(mysql));
    17.     mysql_close(mysql);
    18.   }
    19.   //设置字符集
    20.   int ret;
    21.   ret = mysql_set_character_set(mysql,"utf8");
    22.   if(ret != 0)
    23.   {
    24.     printf("set character failed :%s \n",mysql_error(mysql));
    25.   }
    26.   //选择操作的数据库
    27.   mysql_select_db(mysql,"test");
    28.   //执行语句
    29.   const char* select_sql = "select * from student;";
    30.   ret = mysql_query(mysql,select_sql);
    31.   if(ret != 0)
    32.   {
    33.     printf("query failed :%s \n",mysql_error(mysql));
    34.     mysql_close(mysql);
    35.     return -1;
    36.   }
    37.   //查询语句执行结果
    38.   MYSQL_RES* res = mysql_store_result(mysql);
    39.   if(res == NULL)
    40.   {
    41.     printf("store result  failed :%s \n",mysql_error(mysql));
    42.     mysql_close(mysql);
    43.     return -1;
    44.   }
    45.   int num_row = mysql_num_rows(res);
    46.   int num_col = mysql_num_fields(res);
    47.   for(int i = 0 ; i < num_row;i++)
    48.   {
    49.     MYSQL_ROW row = mysql_fetch_row(res);
    50.     for(int j = 0 ;j < num_col;j++){
    51.       printf("%-15s",row[j]);
    52.     }
    53.     printf("\n");
    54.   }
    55.   mysql_free_result(res);
    56.   mysql_close(mysql);
    57. }

               17f054db872d4d61974c1fcc22019371.png

  • 相关阅读:
    python操作迅雷下载,支持文件重命名
    JUC第二十九讲:JUC工具类: Phaser详解
    Navisworks二次开发——根据属性值筛选出图元
    Vulnhub实战-DC9
    贪心算法专题小结——区间相关问题
    【华为笔试】安排面试官。m个面试官,n个面试者,语言不同,能否安排好面试(C++)
    LVGL基础教程 – LVGL 简介
    线上kafka消息堆积,consumer掉线,怎么办?
    leetcode1537. 最大得分(动态规划-java)
    微信小程序通过获取键盘高度解决键盘弹出挡住输入框问题
  • 原文地址:https://blog.csdn.net/qq_50119037/article/details/127940878