热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux下操作mysql,支持重连_MySQL

linux下操作mysql,支持重连
bitsCN.com

(一)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

[lvhongmin@AY1401201736089361adZ 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

bitsCN.com
推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Echarts图表重复加载、axis重复多次请求问题解决记录
    文章目录1.需求描述2.问题描述正常状态:问题状态:3.解决方法1.需求描述使用Echats实现了一个中国地图:通过选择查询周期&#x ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
author-avatar
周天芷65486
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有