创建了一个MFC对话框应用程序,用ODBC连mdb的数据源。测试连接是成功的。
但是访问表中的数据时出错,错误信息是“在调用SQLFetchScroll/SQLExtendedFetch 之前,没有
列被绑定!我要做的工作就是很简单的判断一下用户输入的用户名和密码是否和mdb中user_pswd表中数据一致。
ODBC中的数据源名也是user_pswd
源代码是这样的:
void CDatatestDlg::OnOK() 
{
// TODO: Add your control notification handler code here
CDatabase m_database;
CDatatestDlg dlg;
int count=0;
if(!m_database.IsOpen())
{
if(!m_database.Open(_T("user_pswd")))
dlg.MessageBox("fail");
}
else
dlg.MessageBox("success");

CRecordset m_recordset;
m_recordset.m_pDatabase=&m_database;
CString strSQL;
UpdateData(TRUE);
strSQL.Format("select * from user_pswd where tms_user='%s' and tms_pswd='%s'",m_username,m_password);
m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
if(m_recordset.GetRecordCount==0)
{
if(count<3)
{
MessageBox("login incorrect!");
count++;
}
else
{
MessageBox("too many trials!");
m_database.Close();
CDialog::OnOK();
}
}
else
MessageBox("login success!");}

解决方案 »

  1.   

    你的错误我找不出来
    我只会这么做,你可以参考一下
    1。创建MFC
    2。插入类,这个类基于CRecordset类
    只要你数据源配置正确的话接下来的步骤里面有选择数据库,
    选择ODBC,你配置的那个
    然后有SELECT DATABSE TABLES
    选择你需要的数据库表格就好了然后再source和h文件里找找定义的地方就好了
    我的是CString aa::GetDefaultConnect()
    {
    return _T("ODBC;DSN=AppConnt");
    }CString aa::GetDefaultSQL()
    {
    return _T("[dbo].[FUser],[dbo].[UserInfor]");//连接了两个表格
    }void aa::DoFieldExchange(CFieldExchange* pFX)
    {
    //{{AFX_FIELD_MAP(aa)
    pFX->SetFieldType(CFieldExchange::outputColumn);
    RFX_Long(pFX, _T("[UserIndex]"), m_UserIndex);
    RFX_Text(pFX, _T("[dbo].[FUser].[UserName]"), m_FUser_UserName);
    RFX_Text(pFX, _T("[dbo].[FUser].[UserDesc]"), m_FUser_UserDesc);
    RFX_Text(pFX, _T("[RegTime]"), m_RegTime);
    RFX_Long(pFX, _T("[MaxSpace]"), m_MaxSpace);
    RFX_Long(pFX, _T("[NowSpace]"), m_NowSpace);
    RFX_Long(pFX, _T("[IsLock]"), m_IsLock);
    RFX_Long(pFX, _T("[UserCode]"), m_UserCode);
    RFX_Text(pFX, _T("[dbo].[UserInfor].[UserName]"), m_UserInfor_UserName);
    RFX_Text(pFX, _T("[dbo].[UserInfor].[UserDesc]"), m_UserInfor_UserDesc);
    RFX_Long(pFX, _T("[1]"), m_1);
    RFX_Long(pFX, _T("[2]"), m_2);
    RFX_Long(pFX, _T("[3]"), m_3);
    RFX_Long(pFX, _T("[all]"), m_all);
    //}}AFX_FIELD_MAP
    }
    再就是h文件中定义的
    long m_UserIndex;
    CString m_FUser_UserName;
    CString m_FUser_UserDesc;
    CString m_RegTime;
    long m_MaxSpace;
    long m_NowSpace;
    long m_IsLock;
    long m_UserCode;
    CString m_UserInfor_UserName;
    CString m_UserInfor_UserDesc;
    long m_1;
    long m_2;
    long m_3;
    long m_all;
    拿来用就可以了,都是数据库表格项里的东西