刚开始学习数据库编程void CUser::GetData(CString name)
{
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
_bstr_t vSQL;
vSQL="SELECT * FROM zhanghao WHERE name='"+name+"'";
_RecordsetPtr m_pRecordset;
m_pRecordset=m_AdoConn.GetRecordSet(vSQL);
if(m_pRecordset->adoEOF==1)
CUser();
else
{
_variant_t var;
var=m_pRecordset->GetCollect("name");
UserName=(LPCTSTR)(_bstr_t )var;// UserName=(LPCTSTR)(_bstr_t )(m_pRecordset->GetCollect("name"));
// Pwd=(LPCTSTR)(_bstr_t )m_pRecordset->GetCollect("pwd"); }
m_AdoConn.ExitConnect();
}本函数是想通过 访问数据库 获得一组数据 并存在一个 CUser 对象 user中
结果 运行时 出现 runtime error
我跟踪了 下 问题在于
运行到 var=m_pRecordset->GetCollect("name"); 这一句时发生错误
MSDN中 也没有 GetCollect 的 解释
小弟真是 没办法 了 高手们帮小弟个忙啊 !!!还有就是 后面从 _variant_t 到 CString 数据类型的转换中 也不是很明白
希望大家 能指引我一下啊
{
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
_bstr_t vSQL;
vSQL="SELECT * FROM zhanghao WHERE name='"+name+"'";
_RecordsetPtr m_pRecordset;
m_pRecordset=m_AdoConn.GetRecordSet(vSQL);
if(m_pRecordset->adoEOF==1)
CUser();
else
{
_variant_t var;
var=m_pRecordset->GetCollect("name");
UserName=(LPCTSTR)(_bstr_t )var;// UserName=(LPCTSTR)(_bstr_t )(m_pRecordset->GetCollect("name"));
// Pwd=(LPCTSTR)(_bstr_t )m_pRecordset->GetCollect("pwd"); }
m_AdoConn.ExitConnect();
}本函数是想通过 访问数据库 获得一组数据 并存在一个 CUser 对象 user中
结果 运行时 出现 runtime error
我跟踪了 下 问题在于
运行到 var=m_pRecordset->GetCollect("name"); 这一句时发生错误
MSDN中 也没有 GetCollect 的 解释
小弟真是 没办法 了 高手们帮小弟个忙啊 !!!还有就是 后面从 _variant_t 到 CString 数据类型的转换中 也不是很明白
希望大家 能指引我一下啊
应该是
if(m_pRecordset->adoEOF==-1)
所以==1时 用构造函数初始化应该 没错吧
所以
if(m_pRecordset->adoEOF==1)
CUser();//该句不可能被执行
你的代码的else块中的语句始终会被执行,若此时m_pRecordset中没有当前记录(adoEOF等于-1),就会出现你所说的错误.
还是有问题
不过 还是要谢谢 luohongming(lhm)兄
给你分吧