一 说明
      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 的使用的更多相关文章

  1. 【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 ...

  2. node.js报错throw err; // Rethrow non-MySQL errors e:\serverTest\node_modules\mysql\lib\protocol\Parser.js:79 解决方法

    今天在用node+angular做后台时,需要使用session保存登陆状态的时候,遇到了此问题,问题直译为非mysql问题,我也在后台取到的登陆用户名和密码,确实不是数据库问题.最后发现在使用ses ...

  3. mysql源码包手动安装、配置以及测试(亲测可行)

    笔记编者:小波/qq463431476博客首页:http://www.cnblogs.com/xiaobo-Linux/ 记下这篇mysql笔记,望日后有用! redhat6采用centos yum源 ...

  4. 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 ...

  5. CentOS 7 安装MySQL 5.6遇到的疑难杂症小结

    在一测试服务器(CentOS Linux release 7.2.1511)上安装MySQL 5.6(5.6.19 MySQL Community Server)时遇到下面错误,这个是因为CentOS ...

  6. [MySQL Reference Manual] 18 复制

    18 复制 18 复制 18.1 复制配置 18.1.1 基于Binary Log的数据库复制配置 18.1.2 配置基于Binary log的复制 18.1.2.1 设置复制master的配置 18 ...

  7. mysql 5.6.24安装实例

    安装前准备工作: 1)编辑PATH路径 vim /etc/profile PATH=/home/mysql/bin:/home/mysql/lib:$PATH export PATH 2)生效PATH ...

  8. mysql数据库主从及主主复制配置演示

    实验系统:CentOS 6.6_x86_64 实验前提:提前准备好编译环境,防火墙和selinux都关闭 实验说明:本实验共有2台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 实验拓 ...

  9. nginx+php-fpm+mysql分离部署详解

    相信大家将这三者部署到同一台主机应该已经不陌生了,今天在这里,给大家演示一下如何将三者部署到三台主机上. 实验系统:CentOS 6.6_x86_64 实验前提:大部分软件使用编译安装,请提前准备好编 ...

随机推荐

  1. Jmeter(二十五)常见问题(转载)

    转载自 http://www.cnblogs.com/yangxia-test 收集工作中JMeter遇到的各种问题   1.  JMeter的工作原理是什么? 向服务器提交请求:从服务器取回请求返回 ...

  2. 旋转数组的最小数字(python)

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...

  3. MySQL基本SQL语句之数据插入、删除数据和更新数据

    一.INSERT插入数据: 方法一:批量插入 基本语法: INSERT INTO tb_name (col1, col2, ...) VALUES (val1, val2, ...)[,(val1, ...

  4. Instrumentation类——Android自动化测试学习历程

    这里需要把Instrumentation类的视频的上.中.下三集一起看,把内容总结一下... 视频地址: http://study.163.com/course/courseLearn.htm?cou ...

  5. TZOJ 4325 RMQ with Shifts(线段树查询最小,暴力更新)

    描述 In the traditional RMQ (Range Minimum Query) problem, we have a static array A. Then for each que ...

  6. FortiGate设备管理

    1.Web管理 1.FortiGate出厂配置 默认地址为192.168.1.99,可以通过https的方式进行web管理(默认用户名admin,密码为空).不同型号设备用于管理的接口略有不同,如: ...

  7. Django中的forms一些小点

    1.默认情况下,chrom浏览器会提前对我们的form表单中的数据做校验,如果不想让chrom浏览器给我们做校验,则只需要按照下面的方式处理就可以了 <form method="pos ...

  8. 不通过调用__Init__来创建实例

    老样子,抛出个问题,我们想要创建一个实例,但是由于某些原因想绕过__init__方法,用别的方式来进行创建. 举个栗子 小贱贱反序列化数据,或者说实现一个类方法将其作为备选的构造函数,都属于这种情况. ...

  9. mysql定时删除6个月前的表

    查看定时是否开启: 查看event是否开启 : SHOW VARIABLES LIKE '%event_sche%'; 将事件计划开启 : ; 将事件计划关闭 : ; 代码: BEGIN -- 保存表 ...

  10. Bootstrap(2) 排版样式

    1.页面主体,Bootstrap 将全局 font-size 设置为 14px,line-height 行高设置为 1.428(即20px):<p>段落元素被设置等于 1/2 行高(即 1 ...