连接sql的问题.

luluso 2009-01-30 03:32:14
void CLSQLDlg::initconn()
{
::CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Connection");
m_pConnection->Open("Driver={SQL Server};server=127.0.0.1;database=Northwind;uid=sa;pwd=","","",adModeUnknown);
}
catch (_com_error e)
{
AfxMessageBox(e.Description());
}

_bstr_t bstrSQL = "select top 10 * from orders";
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
m_pRecordset->MoveFirst();
CString stext;
int num=0;
num=m_pRecordset->GetRecordCount(); //问题一 在这里断点查看为什么num的值是-1 ??????????
while(!m_pRecordset->adoEOF)
{
stext=(char*)(_bstr_t)m_pRecordset->GetCollect("EmployeeID");
m_list.AddString(stext);
}

}

问题二.为什么这断程序运行后就一直挂在内存中运行而不显示界面数据
...全文
60 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rwindwow 2009-01-30
  • 打赏
  • 举报
回复
3楼正解
动态方式下的GetRecordCount()是得不到正确值的
zaodt 2009-01-30
  • 打赏
  • 举报
回复
1、-1是正常的,用静态方式打开就好了

m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);


2、是因为没有 MoveNext

while(!m_pRecordset->adoEOF)
{
stext=(char*)(_bstr_t)m_pRecordset->GetCollect("EmployeeID");
m_list.AddString(stext);

m_pRecordset->MoveNext();

}
ding1188 2009-01-30
  • 打赏
  • 举报
回复
在数据库类的操作时还是加上异常的处理比较安全
zteclx 2009-01-30
  • 打赏
  • 举报
回复
-1应该是没有取得记录数,或执行这句话时出现问题。

4,012

社区成员

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

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