1.在Stdafx.h 加入ADO支持库//////////////////////////////////////////////////////
#import "C:\Program Files\Common Files\SYSTEM\ADO\msado15.dll" no_namespace rename("EOF","ADOEOF")
可能会出现编译错误4146,可加入#pragma warning(disable:4146)
在头文件引入了DAO库时,为防止编译错误
重新声明变量,改变如下:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" \
no_namespace \
rename("EOF","adoEOF") rename("DataTypeEnum","adoDataTypeEnum") \
rename("FieldAttributeEnum", "adoFielAttributeEnum") rename("EditModeEnum", "adoEditModeEnum") \
rename("LockTypeEnum", "adoLockTypeEnum") rename("RecordStatusEnum", "adoRecordStatusEnum") \
rename("ParameterDirectionEnum", "adoParameterDirectionEnum")
2.定义数据库连接类
_ConnectionPtr pConn;
ADO数据连接指针
_RecordsetPtr pRst;
3.在进行数据库操作前要初始化ADO库环境
if(!AfxOleInit())
{
AfxMessageBox("OLE初始化出错!");
return FALSE;
}
操作2000 版本Access数据库
AfxGetModuleState()->m_dwVersion = 0x0601;
创建数据库连接实例
pConn.CreateInstance(__uuidof(Connection));
进行数据库操作时,建议语句中用try…catch()来捕获错误消息,因为它有时会经常出现想不到的错误。格式:
try{…} catch(_com_error *e){…}
打开数据库连接:
_bstr_t Source;
Source=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=XXX.mdb”;
或Source=”Provider=Microsoft.Jet.OLEDB.3.5;Data Source=XXX.mdb”;
pConn->Open(Source,””,””,adModeUnKnown);
执行数据库操作:
_bstr_t Source;
Source=”xxx”;
_variant_t RecordsAffected;
pConn->Execute(Source, &RecordsAffected, adCmdText);
4.常用SQL语句
设置数据库时间类型字段格式:ALTER SESSION SET NLS_DATE_FORMAT=”’YYYY-MM-DD’”;
建立数据表:CREATE TABLE IndexTable(ID INTEGER, ProChartNo STRING(15), Handler STRING(8),Checker STRING(8), TestDate DATETIME, Reason INTEGER);
5.创建数据库指针实例
pRst.CreateInstance(_uuidof(Recordset));
打开数据库操作:pRst->Open(“SELECT * FROM XXX”,pConn,GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
读取数据库:
while(!pRst->adoEOF)
{
_variant_t var=pRst->GetCollect(“字段名”);
if(var.vt!=VT_NULL)
CString strVal=(LPCSTR)_bstr_t(var);
pRst->MoveNext();
}
添加数据库:
pRst->AddNew();
pRst->PutCollect(“字段名”, _variant_t(字段值));
…
pRst>Update();
关闭数据库记录指针
pRst->Close();
pRst=NULL;
关闭数据库连接
If(pConn->State)
pConn->Close();
pConn=NULL;