mysql的查詢api分兩種:1.普通語句API,2.預處理語句API
普通語句API沒什麼。參照:
http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c-api-function-overview就OK了。
只說兩個普通語句API的函數:
void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset)
MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET offset)
兩個函數都是用來移動光標所處的行的。類似于seek
第二個函數很DT的函數,參照:mysql.h的定義:
typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; /* offset to current row */
他的意思就是你把MYSQL_ROWS保存下來,然後用MYSQL_ROWS指針去當offset。
我保存MYSQL_ROWS干毛啊!
my_ulonglong mysql_affected_rows(MYSQL *mysql)
對上一條sql表明受影响或检索的行数
my_ulonglong mysql_insert_id(MYSQL *mysql)
返回由以前的INSERT或UPDATE语句为AUTO_INCREMENT列生成的值。
別他媽的插入一條數據之後用 select max(id) from a;來取插入語句生成的id了!
預處理語句API,參照:
http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c-api-prepared-statements預處理語句API的調用順序可以。
有一個好強大的函數啊!
MYSQL_RES *mysql_stmt_param_metadata(MYSQL_STMT *stmt)
该函数目前不做任何事。
MYSQL_RES *mysql_stmt_result_metadata(MYSQL_STMT *stmt)
查詢結果的元數據。比較特別。因為他返回一個沒有行的結果集。只有你要的列。可以使用mysql_fetch_fields得到列的屬性。
除非你調用了mysql_stmt_store_result之後再調用該函數結果集中才有行數據。
unsigned int mysql_field_count(MYSQL *mysql)
unsigned int mysql_stmt_field_count(MYSQL_STMT *stmt)
my_bool mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
int mysql_stmt_store_result(MYSQL_STMT *stmt)
我寫了個例子。在附件中。
mysql.zip 我的第一个开源项目:
只支持了建表,數據導入,索引導入,視圖。不支持外鍵,存儲過程,觸發器,特殊字符
阅读(3035) | 评论(0) | 转发(0) |