c++SQL操作数据库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前几天写的网站的数据有点不对,就在Vc下写了个程序来刷了一下数据.该程序为doc下的程序,没有界面的,操作access数据库,其中,用boost的lexical_cast<>对类型进行了转换.期间用vector保存了数据库的数据,希望对有需要的人有帮助.
第一个程序用来生成单位编号的,程序如下:
#include
#include
#include
#include
#include
#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
vector
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=*****数据2010.3.19.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
cout<<"数据库连接失败,确认数据库db1.mdb是否在当前路径下!"< 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< } _variant_t var; try { if(!m_pRecordset->BOF) m_pRecordset->MoveFirst(); else { cout<<"表内数据为空"< 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) strY=_com_util::ConvertBSTRToString((_bstr_t)var); cout< m_pRecordset->MoveNext(); */ var = m_pRecordset->GetCollect("地区编号"); char * diqu=_com_util::ConvertBSTRToString((_bstr_t)var); address.push_back(diqu); m_pRecordset->MoveNext(); } } catch(_com_error *e) { cout< } m_pRecordset->Close(); m_pRecordset = NULL; //统计每个地区下有多少个单位 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// unsigned int i; for(i=0;i { char sql[100]="SELECT count(*) as t1 FROM 通讯录where 地区编号='"; char * add=address[i]; strcat(sql,add); strcat(sql,"'"); _RecordsetPtr m_p2; m_p2.CreateInstance(__uuidof(Recordset)); try { m_p2->Open(sql, m_pConnection.GetInterfacePtr(), adOpenDynamic,adLockOptimistic,adCmdText); } catch(_com_error *e) {