linux下操作mysql,支持重连_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

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

全表扫描在MySQL中可能比使用索引更快,具体情况包括:1)数据量较小时;2)查询返回大量数据时;3)索引列不具备高选择性时;4)复杂查询时。通过分析查询计划、优化索引、避免过度索引和定期维护表,可以在实际应用中做出最优选择。

InnoDB的全文搜索功能非常强大,能够显着提高数据库查询效率和处理大量文本数据的能力。 1)InnoDB通过倒排索引实现全文搜索,支持基本和高级搜索查询。 2)使用MATCH和AGAINST关键字进行搜索,支持布尔模式和短语搜索。 3)优化方法包括使用分词技术、定期重建索引和调整缓存大小,以提升性能和准确性。

是的,可以在 Windows 7 上安装 MySQL,虽然微软已停止支持 Windows 7,但 MySQL 仍兼容它。不过,安装过程中需要注意以下几点:下载适用于 Windows 的 MySQL 安装程序。选择合适的 MySQL 版本(社区版或企业版)。安装过程中选择适当的安装目录和字符集。设置 root 用户密码,并妥善保管。连接数据库进行测试。注意 Windows 7 上的兼容性问题和安全性问题,建议升级到受支持的操作系统。

聚集索引和非聚集索引的区别在于:1.聚集索引将数据行存储在索引结构中,适合按主键查询和范围查询。2.非聚集索引存储索引键值和数据行的指针,适用于非主键列查询。

文章讨论了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比较了它们对初学者和高级用户的功能和适合性。[159个字符]

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

MySQL 数据库中,用户和数据库的关系通过权限和表定义。用户拥有用户名和密码,用于访问数据库。权限通过 GRANT 命令授予,而表由 CREATE TABLE 命令创建。要建立用户和数据库之间的关系,需创建数据库、创建用户,然后授予权限。
