用VC连接SQL数据库[转]
					 
					
 古城
					
 
					 
					 
					
					(1).在文件stdafx.h中最后一个#endif的前一行写入 
#import "C:\program files\common files\System\ado\msado15.dll"  no_namespace \
rename("EOF","EndOfFile") \
rename("LockTypeEnum","newLockTypeEnum") \
rename("DataTypeEnum","newDataTypeEnum") \
rename("FieldAttributeEnum","newFieldAttributeEnum") \
rename("EditModeEnum","newEditModeEnum") \
rename("RecordStatusEnum","newRecordStatusEnum") \
rename("ParameterDirectionEnum","newParameterDirectionEnum")
如果你的系统不是安装在C盘的话就把#import 后面的C改成系统所有的盘
--------------------------------------------------------------------------
(2).在C***App类的public:下加入 
    _RecordsetPtr m_pADOSet; 
    bool ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL); 
在private:下加入
private:
    _ConnectionPtr ADOConn; 
--------------------------------------------------------------------------
在class C***App : public CWinApp 
{ 
... 
};之后#endif之前加入
extern CxxxApp theApp; 
--------------------------------------------------------------------------
(3)在BOOL C***App::InitInstance()函数中Enable3dControls(); // Call this when linking 
to MFC statically这一行下面加入 
if( FAILED(::CoInitialize(NULL)) ) 
{ 
    AfxMessageBox("ADO Init failed"); 
    return false; 
} 
try 
{ 
    ADOConn.CreateInstance(__uuidof(Connection)); 
    ADOConn->Open("DSN=OBDC数据源;Provider=MSDASQL","用户","密码", 
    adConnectUnspecified);//这一行要自已修改 
} 
catch(_com_error &e) 
{ 
    CString err; 
    err.Format("%s", (char*)(e.Description()) ); 
    AfxMessageBox(err); 
} 
catch(...) 
{ 
    AfxMessageBox("Unknown Error..."); 
} 
m_pADOSet.CreateInstance(__uuidof(Recordset)); 
-------------------------------------------------------------------------
并在文件最后加上如下代码: 
bool CxxxApp::ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL) 
{ 
    if ( ADOSet->State == adStateOpen) ADOSet->Close(); 
    try 
    { 
        ADOSet->Open(strSQL, ADOConn.GetInterfacePtr(), adOpenStatic, adLockOptimistic, 
        adCmdUnknown); 
        return true; 
    } 
    catch(_com_error &e) 
    { 
        CString err; 
        err.Format("ADO Error: %s",(char*)e.Description()); 
        AfxMessageBox(err); 
        return false; 
    } 
} 
------------------------------------------------------------------------
最后就可以在登录时执行SQL语句了,比如用户为CString strUser, 密码是CString 
strPwd;数据库表是user_table(user_id, user_name, user_pwd)则 
_variant_t sqlQuery ;
sqlQuery = "select * from user_table where user_name='"+strUser +"' and 
user_pwd='"+ strPwd +"'"; 
theApp.ADOExecute(theApp.m_pADOSet, sqlQuery );
int iCount = theApp.m_pADOSet->GetRecordCount(); 
if ( 0==iCount ) 
{ 
    AfxMessageBox(_T("密码错误"), MB_ICONEXCLAMATION); 
    return; 
} 
else 
{ 
    AfxMessageBox(_T("登录成功"), MB_ICONEXCLAMATION); 
}
					 
					
					
					
					
					 
					 
					
					
					 
					 
					
					
					本文评论
					
					
					
					
					
					
					
					
					
					
					
					 
					 
					
				
					发表评论
					
					
					
					
					
					
					
					
				 
				
				
				
				
				
				
				
				
			 
			
			
			
			
			
			
			
			
				
					这是一个别人称之为角落的世界
																		幸而,它的确是我的世界