Chinaunix首页 | 论坛 | 博客
  • 博客访问: 295675
  • 博文数量: 43
  • 博客积分: 1044
  • 博客等级: 准尉
  • 技术积分: 658
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-20 14:56
个人简介

人法地,地法天,天法道,道法自然。

文章分类

全部博文(43)

文章存档

2019年(1)

2013年(3)

2012年(15)

2011年(24)

分类: Mysql/postgreSQL

2011-11-25 13:42:12

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  

我的第一个开源项目:
只支持了建表,數據導入,索引導入,視圖。不支持外鍵,存儲過程,觸發器,特殊字符
阅读(2736) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~