+ -
当前位置:首页 → 问答吧 → ADO 获取记录集时出现问题! 所读出的数据不对!

ADO 获取记录集时出现问题! 所读出的数据不对!

时间:2011-11-29

来源:互联网

C/C++ code

         CString loginReaderID;
    CString loginPassword;    
    _RecordsetPtr m_pRecordset;
    m_pRecordset.CreateInstance("ADODB.Recordset");
    _variant_t vReaderID, vRName, vSex, vBrith, vGread, vPassword;

    //数据库查询执行
    try
    {
        m_pRecordset->Open("SELECT * FROM TReader", _variant_t((IDispatch *)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
        while ( !m_pRecordset->_EOF)
        {
            //  取得学号
            //vReaderID = m_pRecordset->GetCollect(_variant_t((long)0));
            vReaderID = m_pRecordset->GetCollect(_T("ReaderID"));
            loginReaderID = ((LPCTSTR)(_bstr_t)vReaderID);
            MessageBox(loginReaderID);

            //  取得密码
            vPassword = m_pRecordset->GetCollect(_variant_t((long)5));
            //vPassword = m_pRecordset->GetCollect(_T("Password"));
            loginPassword = ((LPCTSTR)(_bstr_t)vPassword);
            MessageBox(loginPassword);
        
            if (g_LoginReaderID == loginReaderID && g_LoginPassword == loginPassword)
            {
                MessageBox(_T("登录成功!"));
            }
            else
            {
                MessageBox(_T("登录失败!"));
            }
            m_pRecordset->MoveNext();
        }
        m_pRecordset->Close();
    }
    catch (_com_error &e)
    {    
        MessageBox(e.Description());
        return ;
    }


   

问题一:为什么获取学号的数据不是数据库中的数据, 本来应该是1的却是081101? 是什么原因?
问题二:vReaderID = m_pRecordset->GetCollect(_T("ReaderID"));可以try 不返回,而
  vPassword = m_pRecordset->GetCollect(_T("Password"));却不可以?


数据库是SQL2005 环境是VS20008; 在下是个菜鸟,这里请各位大侠的帮帮忙! 谢谢^_^!

作者: lyxsearch   发布时间: 2011-11-29

问题一:为什么获取学号的数据不是数据库中的数据, 本来应该是1的却是081101? 是什么原因?
  查询语句"SELECT * FROM TReader"要增加上查询条件,不然返回的是该表TReader所有数据,所以取到的数据不一定是你要的,取得是最后一个,增加查询条件
  select * from TReader where ReaderID = xxx
问题二:vReaderID = m_pRecordset->GetCollect(_T("ReaderID"));可以try 不返回,而
  vPassword = m_pRecordset->GetCollect(_T("Password"));却不可以
  没看明白.

作者: gameslq   发布时间: 2011-11-29

引用 1 楼 gameslq 的回复:
问题一:为什么获取学号的数据不是数据库中的数据, 本来应该是1的却是081101? 是什么原因?
查询语句"SELECT * FROM TReader"要增加上查询条件,不然返回的是该表TReader所有数据,所以取到的数据不一定是你要的,取得是最后一个,增加查询条件
select * from TReader where ReaderID = xxx
问题二:vReaderID =……


问题一: 不是可以用 m_pRecordset->GetCollect(_T("ReaderID"));吗?  
问题二: 就是前一句不抛出异常,而后一句抛出异常! 怎么回事?

作者: lyxsearch   发布时间: 2011-11-29