首先在StdAfx.cpp中添加
_ConnectionPtr m_pConnection;
_CommandPtr m_pCommand;
_RecordsetPtr m_pRecordset;
然后在StdAfx.h中的#endif下面添加
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
extern _ConnectionPtr m_pConnection;
extern _CommandPtr m_pCommand;
extern _RecordsetPtr m_pRecordset;
接着在C…APP的Initlnsrance()函数中添加
//初始化COM,创建ADO连接等操作
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));
//在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
//因为它有时会经常出现一些想不到的错误
try
{
//打开本地Sql Server库
m_pConnection->Open("driver={SQL Server};Server=....填写你的数据库服务器名......;Database=..填写你的数据库名...;Trusted_Connection=SSPI","","",adModeUnknown);
//Server后是服务器的计算机名,注意XP-201203132217\\SQLSERVER2005是双斜线啊,写错了就会返回 [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server 不存在或访问被拒绝
//Database后是数据库名
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败!");
}
然后在需要的地方进行查询
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些想不到的错误
m_pRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pRecordset->Open("SELECT * FROM ...你需要查询的表...", // 查询s表中所有字段
m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
//保存账户信息
int n=0;
_variant_t var;
CString s;
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("...你需要保存的列...");
s.Format("%s",(LPCTSTR)_bstr_t(var));
s.Replace(' ',NULL);
m_pRecordset->PutCollect("...你需要修改的列...",_variant_t(...你修改的值...));//修改
m_pRecordset->Update();//保存
m_pRecordset->Delete(adAffectCurrent);//删除这一行
m_pRecordset->Update();//保存
m_pRecordset->MoveNext();//下一行
n++;
}
m_pRecordset->Close();//关闭查询