说明:本人测试是在xp下,开始连接sql2005是总是连接不上,网上查了下,有说什么用户设置问题,还有的说同ntwdblib.DLL版本问题,都不行,最后经过很多试验终于搞定
注意的是sql2005及以上的dbms(ZHONGYH01\SQL2005)在中间要加两个斜杠否则报错的
#import "msado15.dll" no_namespace rename("EOF","adoEOF")//这个放在.\StdAfx.h中就行了
_ConnectionPtr m_pConnection;
m_pConnection.CreateInstance("ADODB.Connection");HRESULT hr;
/******************连接数据库********************/
try
{
m_pConnection->ConnectionTimeout = 8;
//连接SQL SERVER2000
// m_pConnection->Open("Driver=SQL Server;Database=testzyh;Server=127.0.0.1;UID=sa;PWD=;","","",adModeUnknown);
//连接SQL SERVER2005
//m_pConnection->Open("Driver=SQL Server;Database=test;Server=ZHONGYH01\\SQL2005;UID=sa;PWD=zyhzyhzyh;","","",adModeUnknown);
//连接SQL SERVER2008
//m_pConnection->Open("Driver=SQL Server;Database=ng0011;Server=ZHONGYH01\\SQL2008;UID=sa;PWD=zyhzyhzyh;","","",adModeUnknown);
//连接ACCESS2000
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=userinfo.mdb","","",adModeUnknown);
if(SUCCEEDED(hr))
{
AfxMessageBox("errormessage");///显示错误信息
//prStream->Write(m_pRecordset->Fields->GetItem("b_flow")->GetValue());//取值
}
AfxMessageBox("数据库连接成功!");
//return true;
}
catch(_com_error e)///捕捉异常
{
AfxMessageBox("数据库连接失败!");
return ;
}
/**********************************************/
CString m_UserName;
//读记录
m_pRecordset.CreateInstance("ADODB.Recordset");
hr = m_pRecordset->Open("select * from userphoto where id=1",_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);
m_UserName=m_pRecordset->GetCollect("username").bstrVal;//从某一个字段取值
MessageBox(m_UserName);