在linux上安装好mysql后,建立我们测试用的数据库和表,并插入记录,sql语句如下:
CREATE TABLE t1 (
id INTEGER NOT NULL ,
name TEXT NOT NULL
);
INSERT INTO t1 VALUES(1,'n1');
INSERT INTO t1 VALUES(2,'n2');
INSERT INTO t1 VALUES(3,'n3');
获得表中的记录,用到以下mysql的API:
mysql_init()
mysql_real_connect()
mysql_real_query()
mysql_store_result()
mysql_fetch_row()
mysql_free_result()
mysql_close()
操作中需要用到mysql中定义的三个结构体
MYSQL
MYSQL_RES
MYSQL_ROW
一般步骤是:
1.调用mysql_init()初始化MYSQL结构,许多的函数执行需要这个结构体。
2.调用mysql_real_connect()连接数据库,参数中涉及到数据库名,数据库登录名,数据库密码等等。
3.调用mysql_real_query()执行一条Select SQL语句,通过mysql_store_result()的返回值获得Select的结果,返回的结果就是一个MYSQL_RES结构的指针。
4.调用mysql_fetch_row()获得一条记录,函数的返回值是MYSQL_ROW对象,这是一个char二维数组。获取一条记录以后,mysql_fetch_row会将游标自动向下移动一条记录。
5.调用mysql_free_result()释放结果资源,调用mysql_close关闭连接。
简单的代码如下(没有做失败判断):
int main()
{
MYSQL mysql;
mysql_init(&mysql);
mysql_real_connect(&mysql,NULL,"root","123","ta",0,NULL,0);
mysql_real_query(&mysql,"select * from t1",16);
MYSQL_RES* res = mysql_store_result(&mysql);
int num_fields = mysql_num_fields(res);
MYSQL_ROW row;
while((row = mysql_fetch_row(res)))
{
int i;
for(i = 0; i < num_fields; i ++)
{
char buf[100];
sprintf(buf,"[%s]",row[i]?row[i]:"NULL");
fprintf(stdout,buf);
}
fprintf(stdout,"/n");
}
mysql_free_result(res);
mysql_close(&mysql);
exit(0);
}