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  }

 

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

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

 

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

 

洗洗睡吧... 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值