MFC做的登录界面连接access数据库
我现在做了个登录界面,想改只能一个账户登录为多账户登录。用的数据库是access,采用ado连接数据库。我于是参考网上的做法。跟着网上的做,但是还是出问题。在XXXXDL...
我现在做了个登录界面,想改只能一个账户登录为多账户登录。用的数据库是access,采用ado连接数据库。我于是参考网上的做法。跟着网上的做,但是还是出问题。
在XXXXDLG.h中声明了2个变量
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
在登录按钮下添加下面的代码:
this->UpdateData(true);
::CoInitialize(NULL);
this->m_pConnection.CreateInstance(__uuidof(Connection));
this->m_pRecordset.CreateInstance(__uuidof(Recordset));
this->m_pConnection->Open("DSN=yuangong_dsn","","",0);//上面四行为打开数据源连接
CString str;
str.Format("select * from book_admin where gonghao='%s' and mima='%s'",this->m_username,this->m_pwd);
BSTR bstrSQL=str.AllocSysString();
this->m_pRecordset->Open(bstrSQL,(IDispatch*)this->m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
if(!this->m_pRecordset->adoEOF)
CDialog::OnOK();
else
MessageBox("Failed");
this->m_pRecordset->Close();
this->m_pConnection->Close();
在Stdafx.h中添加下面的代码:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" \
no_namespace rename("EOF","adoEOF")
#include<icrsint.h>
但是有错误。我已经创建好了数据库,并添加了数据源。请问是什么原因,或者我代码中有什么错误,求指点。 展开
在XXXXDLG.h中声明了2个变量
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
在登录按钮下添加下面的代码:
this->UpdateData(true);
::CoInitialize(NULL);
this->m_pConnection.CreateInstance(__uuidof(Connection));
this->m_pRecordset.CreateInstance(__uuidof(Recordset));
this->m_pConnection->Open("DSN=yuangong_dsn","","",0);//上面四行为打开数据源连接
CString str;
str.Format("select * from book_admin where gonghao='%s' and mima='%s'",this->m_username,this->m_pwd);
BSTR bstrSQL=str.AllocSysString();
this->m_pRecordset->Open(bstrSQL,(IDispatch*)this->m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
if(!this->m_pRecordset->adoEOF)
CDialog::OnOK();
else
MessageBox("Failed");
this->m_pRecordset->Close();
this->m_pConnection->Close();
在Stdafx.h中添加下面的代码:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" \
no_namespace rename("EOF","adoEOF")
#include<icrsint.h>
但是有错误。我已经创建好了数据库,并添加了数据源。请问是什么原因,或者我代码中有什么错误,求指点。 展开
1个回答
展开全部
刚刚写了个access的系统
.cpp中
//hxx函数主要用于打开数据库连接
void ADOConn::OnInitADOConn()
{
::CoInitialize(NULL); //why初始化OLE/COM库环境
try
{
m_pCon.CreateInstance("ADODB.Connection"); //创建Connection对象
m_pCon->ConnectionTimeout=3; //设置连接延时
//设置连接字符串why
//m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=InfoMan.mdb","","",adModeUnknown);
m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=InfoMan.mdb;Persist Security Info=False;Jet OLEDB:Database Password=1234","","",adModeUnknown); }
catch(_com_error e) //捕获异常
{
AfxMessageBox(e.Description()); //显示错误信息
}
}
.h中
#import "G:\\MY_PRO\\InfoMan\\msado15.dll"no_namespace\
rename("EOF","adoEOF")
_ConnectionPtr m_pCon; //添加一个指向Connection对象的指针
_RecordsetPtr m_pRs; //添加一个指向Recordset对象的指针
.cpp中
//hxx函数主要用于打开数据库连接
void ADOConn::OnInitADOConn()
{
::CoInitialize(NULL); //why初始化OLE/COM库环境
try
{
m_pCon.CreateInstance("ADODB.Connection"); //创建Connection对象
m_pCon->ConnectionTimeout=3; //设置连接延时
//设置连接字符串why
//m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=InfoMan.mdb","","",adModeUnknown);
m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=InfoMan.mdb;Persist Security Info=False;Jet OLEDB:Database Password=1234","","",adModeUnknown); }
catch(_com_error e) //捕获异常
{
AfxMessageBox(e.Description()); //显示错误信息
}
}
.h中
#import "G:\\MY_PRO\\InfoMan\\msado15.dll"no_namespace\
rename("EOF","adoEOF")
_ConnectionPtr m_pCon; //添加一个指向Connection对象的指针
_RecordsetPtr m_pRs; //添加一个指向Recordset对象的指针
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询