前几天写的网站的数据有点不对,就在Vc下写了个程序来刷了一下数据.该程序为doc下的程序,没有界面的,操作access数据库,其中,用boost的lexical_cast<>对类型进行了转换.期间用vector保存了数据库的数据,希望对有需要的人有帮助.
第一个程序用来生成单位编号的,程序如下:
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include<string.h>
#include<vector>
#include"boost/lexical_cast.hpp"
#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename ("EOF", "adoEOF")
using namespace std;
//修改单位编号
int _tmain(int argc, _TCHAR* argv[])
{
_ConnectionPtr m_pConnection;
CoInitialize(NULL);
m_pConnection.CreateInstance(__uuidof(Connection));
vector<char *> address;//地区编号表
vector<int >numbers;//每个地区内的单位数量统计表
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=*****数据2010.3.19.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
cout<<"数据库连接失败,确认数据库db1.mdb是否在当前路径下!"<<endl;
return FALSE;
}
//统计地区信息
//
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pRecordset->Open("SELECT * FROM 地区代码 where 地区编号>='430000' and 地区编号<'440000'",
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
cout<<e->ErrorMessage()<<endl;
}
_variant_t var;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
cout<<"表内数据为空"<<endl;
return 1;
}
while(!m_pRecordset->adoEOF)
{
/*
var = m_pRecordset->GetCollect("地区编号");
if(var.vt != VT_NULL)
strID= _com_util::ConvertBSTRToString((_bstr_t)var); //_variant_t转字符串
var = m_pRecordset->GetCollect("地区名称");
if(var.vt != VT_NULL)
strX=_com_util::ConvertBSTRToString((_bstr_t)var);
var = m_pRecordset->GetCollect("地区名称");
if(var.vt != VT_NULL)