在stdafx.h中引入:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
添加变量:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
连接数据库:
CoInitialize(NULL);
m_pConnection.CreateInstance(_T("ADODB.Connection"));///创建Connection对象
m_pConnection->ConnectionTimeout = 8;
try{
HRESULT hr;
hr = m_pConnection->Open(_T("Provider=SQLOLEDB.1;Data Source=127.0.0.1,1433;Initial Catalog= databasename;"),_T("sa"),_T("sapwd"),adModeUnknown);
if (FAILED(hr))
{
AfxMessageBox(_T("不能连接数据库!"));
return FALSE;
}
else
{
AfxMessageBox(_T("连接数据库成功!"));
}
}
catch(_com_error e)
{
AfxMessageBox(_T("不能打开数据库!"));
return false;
}
读取数据表:
CString strTableName = _T("");
m_pRecordset = m_pConnection->OpenSchema(adSchemaTables);
if (!m_pRecordset->BOF)
{
m_pRecordset->MoveFirst();
}
while(!m_pRecordset->adoEOF)
{
strTableName =(LPCSTR)_bstr_t(m_pRecordset->GetFields()->GetItem(_T("TABLE_NAME"))->Value);
//MessageBox(strTableName);
m_pRecordset->MoveNext();
m_ctrlListTables.InsertString(m_ctrlListTables.GetCount(),strTableName);
}
读取数据:
CString SQLStr;
SQLStr.Format(_T("select top 1 * from test"));
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(_bstr_t(SQLStr),m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
while(!m_pRecordset->adoEOF)
{
CString str;
str =(LPCSTR)_bstr_t(m_pRecordset->GetFields()->GetItem(_T("id"))->Value);
//MessageBox(strTableName);
m_pRecordset->MoveNext();
m_ctrlListTables.InsertString(m_ctrlListTables.GetCount(),str);
}
插入数据:
CString strCommand=_T("");
strCommand.Format(
_T("INSERT INTO A_cpa values ('%s','%d','%s','%s','%s','%d','%s','%d','%s','%s','%s','%s','%s')"),
LMuname,LMID,lailuURL,addtime,cpaUser,ok,regip,sex8,browser,mima,os,fbl,wwwurl);
try
{
m_pConnection->Execute((_bstr_t)strCommand, NULL, adCmdText);
}
catch(_com_error& e)
{
//MessageBox(e.ErrorMessage());
return false;
}