为什么我不能执行SQL语句

hanzp 2003-04-25 06:35:39
CDatabase* m_pDB;
strConnect = "Driver={Microsoft Access Driver (*.mdb)};DBQ=F:\\VC\\test\\v2\\disk.mdb;";

m_pDB = new CDatabase();
if( m_pDB->OpenEx( _T(strConnect) , CDatabase::noOdbcDialog) )
{
m_isDBConnected = true;

}
else
{
return -1;
}
CRecordset* pRS = new CRecordset(m_pDB);
pRS->m_pDatabase->ExecuteSQL("select * from UserInfo");
CString MSG;
MSG.Format("there are %d records", pRS->GetRecordCount());
MessageBox(MSG);
delete pRS;
return 1;

执行到
MSG.Format("there are %d records", pRS->GetRecordCount());
就出错了
...全文
50 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
edrftgyh 2003-04-25
  • 打赏
  • 举报
回复
对!Open()只支持select语句!
hanzp 2003-04-25
  • 打赏
  • 举报
回复
再问个问题,是不是CRecordset的Open不能执行insert SQL了?
edrftgyh 2003-04-25
  • 打赏
  • 举报
回复
pRS->Open(CRecordset::forwardOnly,"select * from UserInfo");//只支持前移!
将这句改为pRS->Open(CRecordset::dynaset,"select * from UserInfo");
small_wei 2003-04-25
  • 打赏
  • 举报
回复
因为CRecordset::forwardOnly只能向前移
hanzp 2003-04-25
  • 打赏
  • 举报
回复
谢谢大家帮助。
不过现在又有问题了,
我执行MoveNext()的时候,程序报告说只支持前向移动。
怎么回时
edrftgyh 2003-04-25
  • 打赏
  • 举报
回复
还有ExecuteSQL()好像不支持查询功能的SQL语句!只有Open()函数才支持查询语句!
edrftgyh 2003-04-25
  • 打赏
  • 举报
回复
我不知到你出现在什么错误,但pRS->GetRecordCount()函数得到的只是你当前
光标走过的记录,你这样直接调用的话是得不到你想得到的记录的总数的!
要想得到记录总数,你可以这样
while(!pRS->IsEof())
{
pRS->MoveNext();
}
然后再调用pRS->GetRecordCount()就可以得到总记录数了!
small_wei 2003-04-25
  • 打赏
  • 举报
回复
pRS->m_pDatabase->ExecuteSQL("select * from UserInfo");这个是不能返回记录集的,pRS还是空的,所以会出错。
pRS->Open(CRecordset::forwardOnly,"select * from UserInfo");
pRS->MoveLast();
hanzp 2003-04-25
  • 打赏
  • 举报
回复
还是不对呀。
加了pRS->MoveLast()后就在这句出错了
arvid_gs 2003-04-25
  • 打赏
  • 举报
回复
movelast();

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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