zoukankan      html  css  js  c++  java
  • MYSQL 的 C 语言 驱动程序 中的 关键 结构

    MYSQL 的 C 语言 驱动程序:

     今天 太累了 ,.. 思路不清晰 .;

    先放在这里; 明天再来 看一下; 明天 还有很多 事情要做... 计划开始施行!!!!!! 

    主要是 想要 写一个 读取 任意 一行  MYSQL_RES 数据库结果集 中的 数据;

     1 //以下 函数 尚未 编译 测试, 雏形 
     2 MYSQL_ROW  GetRow(unsigned int rowIndex) 
     3  {
     4     
     5      while(rowIndex && Result->data_cursor->data)
     6      {
     7          Result->data_cursor = Result->data_cursor->next;
     8      }
     9     
    10      return Result->data_cursor->data;
    11 

    12  } 

            1 typedef struct st_mysql_res {

     2   my_ulonglong  row_count;
     3   MYSQL_FIELD    *fields;
     4   MYSQL_DATA    *data;
     5   MYSQL_ROWS    *data_cursor;
     6   unsigned long *lengths;        /* column lengths of current row */
     7   MYSQL        *handle;        /* for unbuffered reads */
     8   const struct st_mysql_methods *methods;
     9   MYSQL_ROW    row;            /* If unbuffered read */
    10   MYSQL_ROW    current_row;        /* buffer to current row */
    11   MEM_ROOT    field_alloc;
    12   unsigned int    field_count, current_field;
    13   my_bool    eof;            /* Used by mysql_fetch_row */
    14   /* mysql_stmt_close() had to cancel this result */
    15   my_bool       unbuffered_fetch_cancelled;  
    16   void *extension;
    17 } MYSQL_RES;

       发现一个函数 MYSQL_ROW_OFFSET STDCALL  mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET row),

     MYSQL_ROW_OFFSET 就是 MYSQL_RES 里面的 ( MYSQL_ROWS  *)

     细看一下 -->

     1 

    2 mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET row)
    3 {
    4   MYSQL_ROW_OFFSET return_value=result->data_cursor;
    5   result->current_row= 0;
    6   result->data_cursor= row;
    7   return return_value;
    8 }

     没错 就是这样.! 但是怎么用呢 ? 这个函数为何返回 原来的  result->data_cursor;  ?

      ?? 

    2. 无意中发现  

      1 

     2 void STDCALL
     3 mysql_data_seek(MYSQL_RES *result, my_ulonglong row)
     4 {
     5   MYSQL_ROWS    *tmp=0;
     6   DBUG_PRINT("info",("mysql_data_seek(%ld)",(long) row));
     7   if (result->data)
     8     for (tmp=result->data->data; row-- && tmp ; tmp = tmp->next) ;
     9   result->current_row=0;
    10   result->data_cursor = tmp;
    11 }

     这就 好办了 ..跟我 之前 自己 设计的方法 思路 基本相似;

      但是 发现 偶 想问题  还是 不是很周全....

    先到这 ...  明天再说 ...

    洗洗睡吧... 

  • 相关阅读:
    python-函数进阶
    SHELL wordpress.sh
    XFS: possible memory allocation deadlock in kmem_alloc (mode:0x2d0)
    Puppet install with nginx unicorn
    CentOS 6内核编译问题整理
    Openstack 本地yum源配置
    Openstack 本地yum源配置
    hpsa 0000:0a:00.0: out of memory
    openstack VNC安全问题
    CentOS下crash分析内核kdump文件方法
  • 原文地址:https://www.cnblogs.com/ToDoToTry/p/1512023.html
Copyright © 2011-2022 走看看