mysql.lib 的使用
一 说明
mysql.lib 提供了很多方便的操作,同时结合 vector 使用十分方便。
二 使用
1 声明需要用到的变量
static MYSQL s_mysql[DATABASE_CONNECTION_NUM];
static char mysql_user[50]="root";
static char mysql_password[50]="";
2 初始化数据库连接
初始化连接过程中,根据自己的需要,是否有包含中文字符,设置数据库的属性。
1 bool InitDBConnetion()
2 {
3 int i = 0;
4 bool bOK = false;
5
6 for(i = 0;i < DATABASE_CONNECTION_NUM;i++)
7 {
8 mysql_init(&s_mysql[i]);
9 mysql_options(&s_mysql[i], MYSQL_SET_CHARSET_NAME, "utf8");
10
11 if(NULL == mysql_real_connect(&s_mysql[i], "localhost", mysql_user, mysql_password, DB_NAME, DB_PORT, NULL, 0))
12 {
13 printf("Failed to connect to database: Error: %s\n", mysql_error(&s_mysql[i]));
14 break;
15 }
16 }
17
18 if(i < DATABASE_CONNECTION_NUM)
19 {
20 CloseDBConnection();
21 }
22 else
23 {
24 bOK = true;
25 }
26
27 return bOK;
28 }
29
3 查询并保存结果
1 typedef struct
2 {
3 char chGroupName[256];
4 unsigned char uchGroupInternalId[4];
5 unsigned char uchGroupMemberNum[3];
6
7 }GROUP_INFO;
1 static int GetUserGroupInfo(vector<GROUP_INFO> &vGroup, MYSQL *pMySqlConnection)
2 {
3 int groupNum = 0;
4 MYSQL_RES *pResult = NULL;
5 do
6 {
7 char chSql[1024] ={0};
8 sprintf(chSql, "select group_id,group_name from `cloudsoarmanage`.`user_group`");
9 if (0 != mysql_query(pMySqlConnection,chSql))
10 {
11 break;
12 }
13
14 pResult = mysql_store_result(pMySqlConnection);
15 if (NULL == pResult)
16 {
17 break;
18 }
19
20 MYSQL_ROW sql_row;
21 int groupId = 0;
22 while (sql_row = mysql_fetch_row(pResult))
23 {
24 GROUP_INFO info = {0};
25 strcpy(info.chGroupName, sql_row[1]);
26 groupId = atoi(sql_row[0]);
27 info.uchGroupInternalId[0] = groupId & 0xFF;
28 info.uchGroupInternalId[1] = (groupId>>8) & 0xFF;
29 info.uchGroupInternalId[2] = (groupId>>16) & 0xFF;
30 info.uchGroupInternalId[3] = (groupId>>24) & 0xFF;
31 vGroup.push_back(info);
32 ++groupNum;
33 }
34
35 } while (0);
36
37 if (NULL != pResult)
38 {
39 mysql_free_result(pResult);
40 }
41
42 return groupNum;
43 }
1 void CloseDBConnection()
2 {
3 int i = 0;
4
5 for(i = 0; i < DATABASE_CONNECTION_NUM; i++)
6 {
7 mysql_close(&s_mysql[i]);
8 }
9 }
mysql.lib 的使用的更多相关文章
- 【Python MySQLdb】Library not loaded: /usr/local/mysql/lib/libmysqlclient.20.dylib解决办法
使用MySQLdb遇到以下错误 ImportError: dlopen(/Users/jackey/Documents/Xiaomi/Code/wda_python/lib/python2./site ...
- node.js报错throw err; // Rethrow non-MySQL errors e:\serverTest\node_modules\mysql\lib\protocol\Parser.js:79 解决方法
今天在用node+angular做后台时,需要使用session保存登陆状态的时候,遇到了此问题,问题直译为非mysql问题,我也在后台取到的登陆用户名和密码,确实不是数据库问题.最后发现在使用ses ...
- mysql源码包手动安装、配置以及测试(亲测可行)
笔记编者:小波/qq463431476博客首页:http://www.cnblogs.com/xiaobo-Linux/ 记下这篇mysql笔记,望日后有用! redhat6采用centos yum源 ...
- linux Mysql 安装及配置
1.准备 cmake-3.6.0.tar.gz bison-3.0.4.tar.gz mysql-5.7.13.tar.gz (http://dev.mysql.com/get/Downloads/M ...
- CentOS 7 安装MySQL 5.6遇到的疑难杂症小结
在一测试服务器(CentOS Linux release 7.2.1511)上安装MySQL 5.6(5.6.19 MySQL Community Server)时遇到下面错误,这个是因为CentOS ...
- [MySQL Reference Manual] 18 复制
18 复制 18 复制 18.1 复制配置 18.1.1 基于Binary Log的数据库复制配置 18.1.2 配置基于Binary log的复制 18.1.2.1 设置复制master的配置 18 ...
- mysql 5.6.24安装实例
安装前准备工作: 1)编辑PATH路径 vim /etc/profile PATH=/home/mysql/bin:/home/mysql/lib:$PATH export PATH 2)生效PATH ...
- mysql数据库主从及主主复制配置演示
实验系统:CentOS 6.6_x86_64 实验前提:提前准备好编译环境,防火墙和selinux都关闭 实验说明:本实验共有2台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 实验拓 ...
- nginx+php-fpm+mysql分离部署详解
相信大家将这三者部署到同一台主机应该已经不陌生了,今天在这里,给大家演示一下如何将三者部署到三台主机上. 实验系统:CentOS 6.6_x86_64 实验前提:大部分软件使用编译安装,请提前准备好编 ...
随机推荐
- for 与 for in
在JavaScript中提供了两种方式迭代对象: (1)for 循环: (2)for..in循环: 使用for循环进行迭代数组对象,想必大家都已经司空见惯了.但是,使用for.. in循环时,大家可要 ...
- cnpm安装
npm install -g cnpm --registry=https://registry.npm.taobao.org 如果安装失败,可以使用 npm cache clean 清理缓存,然后再重 ...
- 宋体freetype16和12号字无法正常显示
在使用freetype过程中发现,从window下拷贝来的simsun.ttc, simkai.ttf两个字体, 在调用 FT_Set_Pixel_Sizes(face, 12, 0): 将字体大小设 ...
- Visual Studio 2015 自动生成 的大文件xxx.vc.db的删除问题
用vs2015创建Visual C++项目,编写生成后,每次都会生成一个project_name.VC.db文件,而且会随着你工程修改运行变的越来越大. project_name.VC.db是sqli ...
- 项目总结07:JS图片的上传预览和表单提交(FileReader()方法)
JS图片的上传预览和表单提交(FileReader()方法) 一开始没有搞明白下面这块代码的,今天有时间简单整理下 核心点:FileReader()方法 以下是代码(以JSP文件为例) <!DO ...
- Django的rest_framework的序列化组件之序列化多表字段的方法
首先,因为我们安装了restframework,所以我们需要在django的settings中引入restframework INSTALLED_APPS = [ 'django.contrib.ad ...
- 489. Robot Room Cleaner扫地机器人
[抄题]: Given a robot cleaner in a room modeled as a grid. Each cell in the grid can be empty or block ...
- python is 和 == 和=
Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识) ...
- ---转载---phython资料
整理汇总,内容包括长期必备.入门教程.练手项目.学习视频. 一.长期必备. 1. StackOverflow,是疑难解答.bug排除必备网站,任何编程问题请第一时间到此网站查找. https://st ...
- c# 24种设计模式4建造者模式(Builder)
先来一个例子 建造者接口 public interface IBuilder { void CreateLogo(); void CreateBody(); void CreateWheel(); v ...