vc下ADO访问数据库

 在很多编程实践中,尤其关于管理模块的设计中都会涉及到数据库操作.ADO就是个很好的选择,对于小型的数据库系统.ADO操作起来方便,而且发布简单.现就本人在自己的实际编程中截取如下,作为ADO操作数据库的流程.这些是通用的.

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;

 

你可能感兴趣的:(DAO,数据库,String,null,Integer,System)