#include "DBAccess.h"
#include <iostream>
//using namespace std;
DBAccess::DBAccess()
{
}
DBAccess::~DBAccess()
{
}
bool DBAccess::MysqlConnect()
{
mysql_init(&mysql);
if(mysql_real_connect(&mysql,"localhost","root","123456","DBTroFish",3306,NULL,0))//参数:主机localhost,用户名root,密码root,数据库DBTroFish
{
return true;
}
else
{
return false;
}
}
bool DBAccess::ExecuteSQL(std::string sql)//对数据的增删改操作
{
if(!MysqlConnect())
{
cout<<"连接失败!"<<mysql_error(&mysql)<<endl;//做测试用的
mysql_close(&mysql);//有效解决too many connection
return false;
//exit(1);//整个程序退出
}
if(mysql_query(&mysql,sql.c_str()))//返回值:0表示正常,非0表示发生了错误
{
cout<<"此操作有误!"<<mysql_error(&mysql)<<endl;
mysql_close(&mysql);
return false;
}
if(mysql_affected_rows(&mysql)>0)//返回值:>0表示影响的行数,=0表示无结果,=-1表示错误
{
mysql_close(&mysql);
return true;
}
else
{
mysql_close(&mysql);
return false;
}
}
MYSQL_RES* DBAccess::GetDataSet(std::string sql)//多行数据查询操作
{
MysqlConnect();
if(mysql_query(&mysql,sql.c_str()))
{
cout<<"此查询有误! 错误号为:"<<mysql_errno(&mysql)<<" 原因:"<<mysql_error(&mysql)<<endl;
}
result=mysql_store_result(&mysql);
mysql_close(&mysql);
//mysql_free_result(result);//要在使用后才调用此方法,不然内存会不断增长直至程序结束
return result;
}
MYSQL_ROW DBAccess::GetRow(std::string sql)//单行数据查询操作
{
result=GetDataSet(sql);
if(mysql_num_rows(result))
{
row=mysql_fetch_row(result);
mysql_free_result(result);//解决内存不断增长问题
return row;
}
else
{
return NULL;
}
}
string DBAccess::IntToString(int a)
{
char t[20];
sprintf(t,"%d",a);
return t;
}
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <iostream>
#include <mysql/mysql.h>
#include "DBAccess.h"
#include <stdlib.h>
using namespace std;
int main()
{
if (1)
{
DBAccess myDBAccess;
string sql;
sql
= "insert into tblCoinDetail(CoinTime,Bet,BeginCredit,dEndCredit,GiftFlag)values('2011-02-42 1:1:1','1',5041,115,1)";
if (myDBAccess.ExecuteSQL(sql))
cout << "操作成功" << endl;
else
cout << "操作失败" << endl;
}
else
{
DBAccess myDBAccess;
MYSQL_ROW row;
string
sql =
"select date(CoinTime),sum(BeginCredit),sum(EndCredit),sum(BeginCredit-EndCredit) from tblCoinDetail group by CoinTime";
MYSQL_RES *result;
result = myDBAccess.GetDataSet(sql);
if(result!=NULL)// if (mysql_num_rows(result))//判断是否为空
{
while ((row = mysql_fetch_row(result)))
{
if(row[0]==NULL)//解决空地址问题
{
row[0]=(char*)"2011-01-01";
}
if(row[2]==NULL)
{
row[2]=(char*)"0";
}
fprintf(stdout, "%s|/t%s|/t%s|/t%s/n", row[0], row[1],row[2], row[3]);
}
} }
}
分享到:
相关推荐
spark一个Linux下使用C++学习编写的并发服务器,使用redis作为缓存和MySQL作为数据库,并利用GoogleTest编写单元测试和webbench进行压力测试。.zipspark一个Linux下使用C++学习编写的并发服务器,使用redis作为缓存...
linux(centos) 下C++连接mysql数据库 此程序只实现了查询功能,在centos下编译并运行通过
Linux下C++连接mysql数据库,供大家一起共同分享学习。
1)安装mysql:sudo apt-get ...2)登陆mysql数据库,mysql -uroot -p,回车输入密码,然后创建一个数据库,create table Lottery;,我创建了Lottery数据库。 3)附件是程序连接数据库,然后在Lottery中建立一个表。
由于工作需要抽出一周的时间来研究C/C++访问各种数据库的方法,并打算封装一套数据库操作类,现在奉上最简单的一部分:在Linux下访问MySQL数据库。
linux系统中使用C++对数据库进行读写操作
使用平台X86,乌班图下,当然,C++代码是通用的,也可以在windows下使用 包含了mysql常用的增删改查操作,支持容器数据添加,各种模板数据添加,支持单行增加删除,单行数据修改,多行数据增加删除,多行数据修改,...
C/C++实现mysql数据库的缓存管理 Linux下用C/C++写一个提高mysql数据库效率的数据缓存模块 缓存管理 window下用C/C++写一个提高mysql数据库效率的数据缓存模块 C/C++ mysql缓存 缓存 PS:记得要先把数据库给搭建起来
使用C和C++连接MySQL数据库并进行常用的数据库操作。实现了简单的学生(或职工)信息管理系统,源于大学时的数据库课程设计 软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、...
C/C++实现mysql数据库的缓存管理 Linux下用C/C++写一个提高mysql数据库效率的数据缓存模块 缓存管理 window下用C/C++写一个提高mysql数据库效率的数据缓存模块 C/C++ mysql缓存 缓存 PS:记得要先把数据库给搭建起来
c++访问mysql数据库的类封装,支持linux和windows两种操作系统,简单实用
使用C++语言对MySQL数据库的基本操作进行了封装,基于面向对象思想,可以应用在简单的项目实战中,亲测可用哦,欢迎下载交流
linux平台下用c++代码链接mysql数据库
在linux下每天在指定的时间里自动清除mysql数据库中的一个星期前的log数据
mysql ,mysql安装,mysql重置,linux系统,linux,linux下的mysql,数据库,mysql数据库,linux下的mysql,linux mysql的安装和配置。linux系统设置。
OTL是一个纯C++的通用数据库连接模板库,可以支持各种当下流行的数据库,如Oracle,Sybase, MySQL, PostgreSQL, EnterpriseDB, SQLite, MS ACCESS, Firebird等等.它是一个跨平台类库,在MS Windows, Linux/Unix/Mac ...
这是我自己设计的在Linux下访问MySQL数据库的类的代码,包括基本的插入和查找
一、Linux下挂载光驱: 挂载光驱 mount -t iso9660 /dev/cdrom /mnt/cdrom 卸载光驱 umount /dev/cdrom 弹出光驱 eject 推进光驱 eject –t 二、运行MySQL只需安装: mysql-server-3.23.54a-11....
LINUX下,MYSQL数据库查询函数实例代码,c语言实现