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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值