我最近在学习C++,刚学了半个月吧,带我的导师就开始让我写一个利用c++来开发个工具,这可难坏我了,起初以为根本弄不出来。但是经过不停的修改,导师的带领最终还是弄出来了。明白做技术的在不懈的努力下,肯定会把结果弄出来的。
这是一个头文件,有实现的
下面是实现文件。#include "ModularDB.h"
上边的两个文件主要实现了数据库驱动的加载还有就是连接。下面的主要是数据库操作的一些基本方法。
下面是实现文件。
上边的两个文件主要是数据库操作的基本类和方法。
下边主要是实体类
下面就是实现类了。
// createini.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "createini.h"
#include "..\..\Database\ModularDB.h"
#include <iostream>
#include<fstream>
using namespace std;
////////////从数据库中取数据,将其放到vector<data> 中。
vector<data> GetData::getdata()
{
CADOAccessor*l_pAccessor = NULL;
_RecordsetPtrl_pRecordset = NULL;
sInfoDBl_sDB;
l_pAccessor = OpenDB("E:/2011年06月全省版本/Config/Config(1).mdb");
ASSERT(l_pAccessor);
CStringl_strSQL = _T("");
l_strSQL.Format("SELECT CommandID,HandsetNo,ReturnCode,Explain,List FROM ResponseData order by CommandID");
l_pRecordset = l_pAccessor->GetRecordsetEx(l_strSQL);
ASSERT(l_pRecordset);
vector<data> vtrList;
//map<string, vector<data>> l_mapData;
while(!l_pRecordset->adoEOF)
{
//vector<data> vtrList;
variant_tl_vtValue;
data d;
l_vtValue = l_pRecordset->GetCollect("CommandID");
VariantT2string(l_vtValue, d.commandID);
l_vtValue = l_pRecordset->GetCollect("HandsetNo");
VariantT2string(l_vtValue, d.handSetNO);
l_vtValue = l_pRecordset->GetCollect("ReturnCode");
VariantT2string(l_vtValue, d.returnCode);
l_vtValue = l_pRecordset->GetCollect("Explain");
VariantT2string(l_vtValue, d.explain);
l_vtValue = l_pRecordset->GetCollect("List");
VariantT2string(l_vtValue, d.list);
vtrList.push_back(d);
l_pRecordset->MoveNext();
//l_mapData[d.commandID] = vtrList;
}
return vtrList;
}
///***
//取出数据,讲数据放入生成ini文件中。
//先取出每个对象d,然后对commandID判断,如果相同则放入同一个文件
// 如果不相同,则重新生成一个ini文件中
int GetData:: makeini(vector<data> s_data)
{
string s_commandid;
string s_handSetNO;
string s_explain;
string s_returncode;
string s_list;
for(vector<data> ::iterator iter=s_data.begin();iter!=s_data.end();++iter)
{
s_commandid=(*iter).commandID;
s_handSetNO=(*iter).handSetNO;
s_returncode=(*iter).returnCode;
s_explain=(*iter).explain;
s_list=(*iter).list;
static string temp;
if(temp==s_commandid)
{
string l_strFile ="e:\\file\\";
string t_strFile=".ini";
l_strFile+= temp;
//char* path="e:\\1.ini";
//t_strFile+=l_strFile;
l_strFile+=t_strFile; ///e:\file\0100.ini
char* path=(char*)l_strFile.c_str();
//char* path = "E:\\file\\1.ini"; // 你要创建文件的路径
ofstream fout(path,ios::app | ios::out);
//fout.seekp(ios::end);
if(fout)
{
fout<<s_handSetNO<<"="<<s_returncode<<"~"<<s_explain<<";"<<s_list<<endl;
fout.close();
}
}
else
{
temp=s_commandid;
string l_strFile ="e:\\file\\";
string t_strFile=".ini";
l_strFile+= (string)(*iter).commandID;
//char* path="e:\\1.ini";
//t_strFile+=l_strFile;
l_strFile+=t_strFile; ///e:\file\0100.ini
char* path=(char*)l_strFile.c_str();
//char* path = "E:\\file\\1.ini"; // 你要创建文件的路径
ofstream fout(path);
if(fout)
{
fout<<s_handSetNO<<"="<<s_returncode<<"~"<<s_explain<<";"<<s_list<<endl;
fout.close();
}
}
}
return 0;
}
int GetData::VariantT2string(variant_t p_vtValue, string& p_strValue)
{
if(VT_BSTR != p_vtValue.vt)
{
p_strValue.clear();
return 1;
}
CStringl_strValue = p_vtValue;
p_strValue = l_strValue.GetBuffer();
return 0;
}
CADOAccessor* GetData::OpenDB(CString p_strPathDB)
{
intl_iReturn = 0;
CADOAccessor*l_pAccessor = NULL;
try
{
l_pAccessor = reinterpret_cast<CADOAccessor*>(CModularDB::GetInstance()->CreateAccessor());
ASSERT(l_pAccessor);
CString l_strFileDB = _T("");
//l_strFileDB.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s..\..\Config\Config.mdb");
l_strFileDB.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s", p_strPathDB);
if(0 != l_pAccessor->OpenDataBase(l_strFileDB))
{
l_iReturn = 1;
throw l_iReturn;
}
}
catch(...)
{
if(NULL != l_pAccessor)
{
CModularDB::GetInstance()->FreeAccessor(l_pAccessor);
l_pAccessor = NULL;
}
}
return l_pAccessor;
}
int GetData::OperateDB(sInfoDB& p_sDB)
{
try
{
CStringl_strDB = _T("");
l_strDB.Format("%s/%s", this->m_strPathApp.GetBuffer(), p_sDB.strDB.GetBuffer());
p_sDB.pAccessor = OpenDB(l_strDB);
p_sDB.pRecordset = p_sDB.pAccessor->GetRecordsetEx(p_sDB.strSQL);
}
catch(...)
{
return -1;
}
return 0;
}
void GetData::FreeDB(sInfoDB& p_sDB)
{
if(NULL != p_sDB.pAccessor)
{
CModularDB::GetInstance()->FreeAccessor(p_sDB.pAccessor);
p_sDB.pAccessor = NULL;
}
}
由于本项目是在一个mfc工程里建的,然后直接就将调用的方法放到了createini2Dlg.cpp内了。
// TODO: 在此添加额外的初始化代码***************************************?//华丽的分割线。
GetData data;
data.makeini(data.getdata());
主要是这些了。
下面主要是讲解一下改程序 主要运行过程吧。首先在入口处直接调用 类GetData内部的方法,既makeini方法,其主要作用就是取出数据,讲数据放入生成ini文件中。
//先取出每个对象d,然后对commandID判断,如果相同则放入同一个文件
// 如果不相同,则重新生成一个ini文件中
然后起参数就是getData方法了,他返回了数据库中的所有的记录。
////////////从数据库中取数据,将其放到vector<data> 中。
vector<data> GetData::getdata()
getdata()当然在调用其他所有的数据库中的类。
分享到:
相关推荐
使用了 61850标准后,屏柜、设备等信息可以通过 SCL 文件来自动创建,屏柜、设备以及配置信息可以自动生成,简化了建库过程。以下以PSL621D 为例,详细说明了如何通过 SCL 文件定义参数数据库。
1.6 INI文件写入操作 65 1.7 INI文件读取操作 68 1.8创建XML文件 71 1.9读取XML文件 72 第六章 图形图像操作 1.1绘制文字 75 1.2绘制线条 75 1.3绘制椭圆 77 1.4显示静态图像 78 1.5显示动态图像 78 1.6图片水平移动...
1.6 INI文件写入操作 65 1.7 INI文件读取操作 68 1.8创建XML文件 71 1.9读取XML文件 72 第六章 图形图像操作 1.1绘制文字 75 1.2绘制线条 75 1.3绘制椭圆 77 1.4显示静态图像 78 1.5显示动态图像 78 1.6图片水平移动...
12.3 .ini文件读写操作 500 12.4 注册表读写操作 502 12.4.1 注册表简介 502 12.4.2 注册表API 504 12.4.3 访问并修改注册表 507 12.5 小结 509 第13章 Visual C++ 2010 MFC数据库开发 510 13.1 ...
实例140 提取指定文件夹目录到INI文件 5.3 与文件目录相关的命令操作 实例141 删除文件目录 实例142 重命名文件目录 5.4 文件、文件夹的复制和移动 实例143 批量移动文件 实例144 网络文件夹复制 实例145 ...
cc实例140 提取指定文件夹目录到INI文件 5.3 与文件目录相关的命令操作 cc实例141 删除文件目录 cc实例142 重命名文件目录 5.4 文件.c文件夹的复制和移动 cc实例143 批量移动文件 ...
cc实例137 清空回收站 5.2 查找文件 cc实例138 搜索文件 cc实例139 检查文件是否存在 cc实例140 提取指定文件夹目录到INI文件 5.3 与文件目录相关的命令操作 cc实例141 删除文件目录 cc实例142 ...
cc实例140 提取指定文件夹目录到INI文件 5.3 与文件目录相关的命令操作 cc实例141 删除文件目录 cc实例142 重命名文件目录 5.4 文件.c文件夹的复制和移动 cc实例143 批量移动文件 ...
数据库1)数据库使用MySql引擎2)在运行项目前,需先将mysql表结构导入,具体导入方法在 database 目录下3)程序运行时,运行目录下会自动生成Setting.ini文件,Mysql的连接参数,如用户名、密码,在ini文件中配置4...
ini文件的类适合VC使用 如题。 Inline Hook(ring3) 简单源码 代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上...
实例140 提取指定文件夹目录到INI文件 5.3 与文件目录相关的命令操作 实例141 删除文件目录 实例142 重命名文件目录 5.4 文件、文件夹的复制和移动 实例143 批量移动文件 实例144 网络文件夹复制 实例145 ...
CIN:OS/2改变控制文件用于跟踪INI文件中的变化 CLASS:Java类文件 CLP:Windows 剪贴板文件 CLL:Crick Software Clicker文件 CLS:Visual Basic类文件 CMD:Windows NT,OS/2的命令文件;DOS CD/M命令文件;...
VC++ ini文件读写操作类实例 VC++版源代码统计工具 内含自绘CMenu、CButton、CDialog、CStatic、CListCtrl等。 VC++6.0 控制摄像头 一个视频捕捉类对摄像头的操作。 VC+++暴风影音(Media+Player+Classic)源码 ...
在安装目录中新建一个ini文件,配置端口(3306)、连接数等等 在bin目录下以管理员的身份打开控制窗口,cmd。输入:mysqld --initialize --console, 初始化,初始化之后,会显示本地主机localhost,管理员root,...
8.20 实例176:获取INI文件指定段的全部键名和键值 第9章 打印 9.1 实例177:通过打印对话框 …… 第10章 多线程 第11章 网络 第12章 ADO数据库 第13章 动态链接库 第14章 系统 第15章 设备管理 第16章 数据类型及...
VC++ ini文件读写操作类实例 VC++版源代码统计工具 内含自绘CMenu、CButton、CDialog、CStatic、CListCtrl等。 VC++6.0 控制摄像头 一个视频捕捉类对摄像头的操作。 VC+++暴风影音(Media+Player+Classic)源码 ...
VC++ ini文件读写操作类实例 VC++版源代码统计工具 内含自绘CMenu、CButton、CDialog、CStatic、CListCtrl等。 VC++6.0 控制摄像头 一个视频捕捉类对摄像头的操作。 VC+++暴风影音(Media+Player+Classic)源码 ...
VC++ ini文件读写操作类实例 VC++版源代码统计工具 内含自绘CMenu、CButton、CDialog、CStatic、CListCtrl等。 VC++6.0 控制摄像头 一个视频捕捉类对摄像头的操作。 VC+++暴风影音(Media+Player+Classic)源码 ...