{
CDataConn m_DataConn;
m_DataConn.OnInitDataConn();
CString sql;
sql.Format("SELECT UserName,Userjb FROM usert");
m_DataConn.ExecuteSQL((_bstr_t)sql);
int nCount=0;
while(!IsEndOfFile())
{
GetOneRow(2,m_var);
strName.Add(STRING(m_var[0]));
strjb.Add(STRING(m_var[1]));
m_pRecordset->MoveNext();
nCount ++;
}
return nCount;
}
BOOL CDataConn::ExecuteSQL(_bstr_t bstrSQL)
{
_variant_t RecordsAffected;
try
{
if(m_pConnection==NULL)
OnInitDataConn();
m_pRecordset=m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return m_pRecordset;
}
catch(_com_error e)
{
e.Description();
return false;
}
}
Recordset21 CXX0030: Error: expression cannot be evaluated
3 个解决方案
#1
IsEndOfFile(),这个函数是不是有副作用?
或是,你开了其他的线程?
或是,你开了其他的线程?
#2
应该是IsEndOfFile出错了
#3
m_pRecordset=m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return m_pRecordset
检查返回的m_pRecordset的三个属性值
TRACE("%d\n",m_pRecordset->CursorLocation);
TRACE("%d\n",m_pRecordset->CursortType);
TRACE("%d\n",m_pRecordset->LockType);
如果结果是3,0,1,那么恭喜你,这里返回的结果集是拥有只读向前游标的,不允许Move方法,Movefirst,MoveLast
然后看看你的IsEndOfFile和GetOneRow(2,m_var);实现看看有没有上述三个方法之一
还有一点
if(m_pConnection==NULL)
OnInitDataConn();
m_pRecordset=m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return m_pRecordset;
这里返回的一个结果集,但是你的函数声明为什么是返回BOOL类型。
程序里调用ExecuteSQL,也是一个直接调用,没有返回值接受
return m_pRecordset
检查返回的m_pRecordset的三个属性值
TRACE("%d\n",m_pRecordset->CursorLocation);
TRACE("%d\n",m_pRecordset->CursortType);
TRACE("%d\n",m_pRecordset->LockType);
如果结果是3,0,1,那么恭喜你,这里返回的结果集是拥有只读向前游标的,不允许Move方法,Movefirst,MoveLast
然后看看你的IsEndOfFile和GetOneRow(2,m_var);实现看看有没有上述三个方法之一
还有一点
if(m_pConnection==NULL)
OnInitDataConn();
m_pRecordset=m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return m_pRecordset;
这里返回的一个结果集,但是你的函数声明为什么是返回BOOL类型。
程序里调用ExecuteSQL,也是一个直接调用,没有返回值接受
#1
IsEndOfFile(),这个函数是不是有副作用?
或是,你开了其他的线程?
或是,你开了其他的线程?
#2
应该是IsEndOfFile出错了
#3
m_pRecordset=m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return m_pRecordset
检查返回的m_pRecordset的三个属性值
TRACE("%d\n",m_pRecordset->CursorLocation);
TRACE("%d\n",m_pRecordset->CursortType);
TRACE("%d\n",m_pRecordset->LockType);
如果结果是3,0,1,那么恭喜你,这里返回的结果集是拥有只读向前游标的,不允许Move方法,Movefirst,MoveLast
然后看看你的IsEndOfFile和GetOneRow(2,m_var);实现看看有没有上述三个方法之一
还有一点
if(m_pConnection==NULL)
OnInitDataConn();
m_pRecordset=m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return m_pRecordset;
这里返回的一个结果集,但是你的函数声明为什么是返回BOOL类型。
程序里调用ExecuteSQL,也是一个直接调用,没有返回值接受
return m_pRecordset
检查返回的m_pRecordset的三个属性值
TRACE("%d\n",m_pRecordset->CursorLocation);
TRACE("%d\n",m_pRecordset->CursortType);
TRACE("%d\n",m_pRecordset->LockType);
如果结果是3,0,1,那么恭喜你,这里返回的结果集是拥有只读向前游标的,不允许Move方法,Movefirst,MoveLast
然后看看你的IsEndOfFile和GetOneRow(2,m_var);实现看看有没有上述三个方法之一
还有一点
if(m_pConnection==NULL)
OnInitDataConn();
m_pRecordset=m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return m_pRecordset;
这里返回的一个结果集,但是你的函数声明为什么是返回BOOL类型。
程序里调用ExecuteSQL,也是一个直接调用,没有返回值接受