#include <stdio.h>
#include <unistd.h>
#include <mysql.h>
#include <stdlib.h>
#include <string.h>
#define BUFFER_SIZE 1000000
#define bool int
#define true 1
#define false 0
bool Connect_Server(MYSQL **sql,char *host,char *user,char *passwd,char *dbname)
{
my_bool b = 0;
if(!(*sql=mysql_init(NULL)))
{
printf("%s\n",mysql_error(*sql));
return 0;
}
mysql_options(*sql,MYSQL_REPORT_DATA_TRUNCATION,&b);
if(!mysql_real_connect(*sql,host,user,passwd,dbname,0,NULL,0))
{
fprintf(stderr,"%s\n",mysql_error(*sql));
return 0;
}
return 1;// true;
}
bool Execute(MYSQL *mysql,MYSQL_RES **res,char *query,int length)
{
if(length!=0)
{
if(mysql_real_query(mysql,query,length))
{
printf("query error!\n");
return false;
}
}
else
{
if(mysql_query(mysql,query))
{
printf("%s","query error!\n");
return false;
}
}
*res = mysql_store_result(mysql);
if(!*res)
{
if(mysql_field_count(mysql)>0)
{
printf("%s\n", "store_result error!");
return false ;
}
}
return true;
}
bool Select_Row(MYSQL_ROW *row,MYSQL_RES *res,my_ulonglong num_row)
{
if(num_row>mysql_num_rows(res)||num_row<0)
{
printf("%s\n", "Select row error!");
return false;
}
/*void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset);
offset
*/
//mysql_data_seek(res,num_row);
*row=mysql_fetch_row(res);
if(*row==NULL)
{
printf("%s\n", "fetch_row error!");
return false;
}
return true;
}
bool Next_Row(MYSQL_ROW *row,MYSQL_RES *res)
{
*row=mysql_fetch_row(res);
if(*row==NULL)
{
// printf("%s\n", "fetch_row error!");
return false;
}
return true;
}
unsigned long Num_Rows(MYSQL_RES *res)
{
return (unsigned long)mysql_num_rows(res);
}
void Free_Result(MYSQL_RES *res)
{
mysql_free_result(res);
}
void Mysql_Close(MYSQL *sql)
{
mysql_close(sql);
}
int main(void)
{
char query[200];
//STEP 1:define varible
MYSQL *mysql;
MYSQL_RES *res;
MYSQL_ROW row;
/////////////////////////////////////////////////////////////////////////////////////
//STEP 2:connect to database
//"127.0.0.1", server ip;
//"root" and "123456",usename and passwd
//"test",which database you want to use
if(!Connect_Server(&mysql,"127.0.0.1", "root", "123456", "test"))
{
return 0;
}
//////////////////////////////////////////////////////////////////////////////////////
//STEP 3:query
////////query cmd.
strcpy(query,"SELECT id FROM info");
/////////execute query
if(!Execute(mysql,&res,query,0))
{
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//STEP 4:fetch query result row by row
printf("%lu rows in result.\n",Num_Rows(res));
printf("\nGo on search in result...\n");
while(Next_Row(&row,res))
{
printf("ser_no=%s\n",row[0]);
}
Free_Result(res);
////////////////////////////////////////////////////////////////////////////////////////
//STEP 5:close connect
Mysql_Close(mysql);
return 0;
}
结果
[kenthy@kenthy mysql]$ gcc -Wall -o mysql1 mysql1.c -I/usr/include/mysql/ -L/usr/lib/mysql/ -lmysqlclient -lz
[kenthy@kenthy mysql]$ ./mysql1
10 rows in result.
Go on search in result...
ser_no=1
ser_no=2
ser_no=3
ser_no=4
ser_no=5
ser_no=6
ser_no=7
ser_no=8
ser_no=9
ser_no=10
|