ado访问数据库的问题(在线等)

ewitt 2009-11-20 12:18:01
CString user,password,power,temp;
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT * FROM password",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
int k=0;
while(!m_pRecordset->adoEOF)
{
user=m_pRecordset->GetCollect("name").bstrVal;
password=m_pRecordset->GetCollect("password").bstrVal; //在这句话上第二次循环时产生错误
power=m_pRecordset->GetCollect("userright").bstrVal;
出现:unhandled exception in abc.exe(MSVCRTD.DLL)
OX00000005 ;ACCESS VIOLATION
提示框样的错误
...全文
160 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fandh 2009-11-20
  • 打赏
  • 举报
回复
_variant_t var;
var = m_pRecordset->GetCollect("password");
if(var.vt != VT_NULL)
password=(LPCSTR)_bstr_t(var);
fandh 2009-11-20
  • 打赏
  • 举报
回复
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("表内数据为空");
return;
}

在while循环加!
Dingnifei123 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ghost90 的回复:]
password=m_pRecordset->GetCollect("password").bstrVal; /
/在这句话上第二次循环时产生错误 这个时候的 password 字段为空????
[/Quote]
我觉得这种情况得自己判断,要不就在数据库里设计的时候注意字段的设置,

一般俺是很少把字段设置为NULL的,最好有个默认值,不至于经常出现一些莫名其妙的错误,
Ghost90 2009-11-20
  • 打赏
  • 举报
回复
password=m_pRecordset->GetCollect("password").bstrVal; /
/在这句话上第二次循环时产生错误 这个时候的 password 字段为空????
Dingnifei123 2009-11-20
  • 打赏
  • 举报
回复
当然了,如果你的要求不高,也可以自己写,

这样的话你可以看看孙鑫的视频教程,最后一章,说的还算可以!
Dingnifei123 2009-11-20
  • 打赏
  • 举报
回复
这里有个成熟的ADO类,你把这个加到你的工程里,应该完全可以满足您的要求了,
http://www.codeproject.com/KB/database/caaadoclass1.aspx


m_pRecordset->MoveFirst(); // 建议加这么一句!
while(!m_pRecordset->adoEOF)


ToperRay 2009-11-20
  • 打赏
  • 举报
回复
不应该啊?

是不是不是第二句的错误啊。

try catch一下看看什么错误。

yaozhiyong110 2009-11-20
  • 打赏
  • 举报
回复
你读完一条记录m_pRecordset下移了吗?
读完一条记录要movenext的啊
江川 2009-11-20
  • 打赏
  • 举报
回复
你这个代码看不出任何问题。
whutcl8110 2009-11-20
  • 打赏
  • 举报
回复
_variant_t var;
var = m_pRecordset->GetCollect("name");
if(var.vt != VT_NULL||var.vt != VT_EMPTY)
user=var.bstrVal;
else
user.Empty();

var = m_pRecordset->GetCollect("password");
if(var.vt != VT_NULL||var.vt != VT_EMPTY)
password=var.bstrVal;
else
password.Empty();

var = m_pRecordset->GetCollect("userright");
if(var.vt != VT_NULL||var.vt != VT_EMPTY)
power=var.bstrVal;
else
power.Empty();

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧