linux mysql query_linux下操作mysql,支持重连

(一)code

#include

#include

#include

#include

#include

#include

#define MAX_QUERY_LEN 1024

#define MAX_QUERY_COUNT 2

#define PRINT_MYSQL_ERROR(mysql) fprintf(stderr, "mysql-error:%s\n", mysql_error(mysql))

typedef struct prop_global{

MYSQL *mysql;

char *db_host;

char *db_user;

char *db_pwd;

char *db_name;

char query[MAX_QUERY_LEN];

int order_id;

}prop_global_t;

static prop_global_t *g_p;

int prop_init(const char *host, const char *user, const char *pwd, const char *db){

prop_global_t *y=(prop_global_t *) malloc( sizeof(*y));

y->mysql = mysql_init(NULL);

if( NULL == y->mysql ){

PRINT_MYSQL_ERROR( y->mysql );

return -1;

}

//  printf("mysql %s, %s, %s, %s\n", host, user, pwd, db);

if( NULL == mysql_real_connect( y->mysql, host, user, pwd, db, 0, NULL, 0 ) ){

PRINT_MYSQL_ERROR( y->mysql );

return -1;

}

y->db_host = strdup(host);

y->db_user = strdup(user);

y->db_pwd  = strdup(pwd );

y->db_name = strdup( db);

y->order_id = 1;

g_p = y;

//printf("mysql init ok\n");

return 0;

}

int safe_query( prop_global_t *y, const char *query, int len){

int i;

int errno;

//printf("sql: %d %s\n", len, query );

for( i=0; i

errno = mysql_real_query(y->mysql, query, len);

switch( errno ){

case 0: return 0;

case CR_SERVER_GONE_ERROR:

case CR_SERVER_LOST:

mysql_close( y->mysql );

y->mysql = mysql_init(NULL);

if( NULL == mysql_real_connect( y->mysql, y->db_host, y->db_user, y->db_pwd, y->db_name, 0, NULL, 0 ) ){

PRINT_MYSQL_ERROR( y->mysql );

return -1;

}

break;

default:

PRINT_MYSQL_ERROR( y->mysql );

return -1;

}

}

return -1;

}

int get_lzddz_num(void){

int n;

int rownum = 0;

//MYSQL_ROW row;

MYSQL_RES *res = NULL;

prop_global_t *y = g_p;

int r = -1;

n = snprintf(y->query, MAX_QUERY_LEN , "select userid,matchid,matchseq ,userseq , score, state, takecoin , token, signupcond,site, rtime from t_jj_user_match where  matchid = 6684674 or matchid = 6684675 or  matchid = 6684676" );

if( safe_query(y, y->query, n )){

printf("err:%d\n", __LINE__);  return r;

}

res = mysql_store_result(y->mysql);

if( NULL == res ){

printf("err:%d\n", __LINE__); return r;

}

rownum = mysql_num_rows( res );

/*

printf("lzddz num = %d\n", rownum );

if( rownum > 0 ){

while( (row = mysql_fetch_row(res) ) ) {

printf("%d\t", atoi( row[0] )); //userid

printf("%d\t", atoi( row[1] )); //matchid

printf("%d\t", atoi( row[2] )); //matchseq

printf("%d\t", atoi( row[3] )); //userseq

printf("%d\t", atoi( row[4] )); //score

printf("%d\t", atoi( row[5] )); //state

printf("%d\t", atoi( row[6] )); //takecoin

printf("%d\t", atoi( row[7] )); //token

printf("%d\t", atoi( row[8] )); //signupcond

printf("%d\t", atoi( row[9] )); //site

printf("%d\t", atoi( row[10] )); // rtime

printf("\n");

}

}

*/

mysql_free_result(res);

system("date");

printf("lzddz num = %d\n", rownum );

return rownum;

}

void prop_release( void ){

prop_global_t *y = g_p;

mysql_close( y->mysql );

free( y->db_host);

free( y->db_user);

free( y->db_pwd );

free( y->db_name);

}

int main(void){

int ret = 0;

ret = prop_init( "41.15.11.59", "lhm", "1234567lhm", "db_jj");

if( 0 == ret ){

get_lzddz_num();

prop_release();

}

return 0;

}

(二)Makefile

[[email protected] database]$ cat Makefile

FLAGS = -O2 -g -Wpointer-arith -Wstrict-prototypes -lm -W -Wall

LIB = -lpthread -lmysqlclient

INCLUDE_PATH = /usr/include/mysql

CC = gcc

all:lhm.exe

lhm.exe:lhm_query.c

$(CC) -o $@ ${LIB} ${FLAGS} -L /usr/lib64/mysql -I ${INCLUDE_PATH} lhm_query.c

clean:

rm lhm.exe

原文:http://blog.csdn.net/wusthongmin/article/details/36626697

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值