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 }

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

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

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

洗洗睡吧... 

原文地址:https://www.cnblogs.com/ToDoToTry/p/1512023.html