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 }
這就 好辦了 ..跟我 之前 自己 設計的方法 思路 基本相似;
但是 發現 偶 想問題 還是 不是很周全....
先到這 ... 明天再說 ...
洗洗睡吧...