MYSQL 的 C 語言 驅動程式 中的 關鍵 結構

來源:互聯網
上載者:User

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 }

 

 這就 好辦了 ..跟我 之前 自己 設計的方法 思路 基本相似;

  但是 發現 偶 想問題  還是 不是很周全....

 

先到這 ...  明天再說 ...

 

洗洗睡吧... 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.