一个函数内容如下:
CString str;
str.Format("SELECT * FROM StudentTable WHERE Name='%s",m_searchName);
BSTR sql=str.AllocSysString();
m_pRecordset->Close();
m_pRecordset->Open((_variant_t)str,_variant_t((IDispatch*) m__pConnection,true),adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t var;
var = m_pRecordset->GetCollect("Index");
if(var.vt != VT_NULL)
m_index = (LPCSTR)_bstr_t(var);
为什么执行到OPEN函数就执行不下去?错误是:runtime error!
abnormal programe termination
CString str;
str.Format("SELECT * FROM StudentTable WHERE Name='%s",m_searchName);
BSTR sql=str.AllocSysString();
m_pRecordset->Close();
m_pRecordset->Open((_variant_t)str,_variant_t((IDispatch*) m__pConnection,true),adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t var;
var = m_pRecordset->GetCollect("Index");
if(var.vt != VT_NULL)
m_index = (LPCSTR)_bstr_t(var);
为什么执行到OPEN函数就执行不下去?错误是:runtime error!
abnormal programe termination
这样用:try
{
CString str;
str.Format("SELECT * FROM StudentTable WHERE Name='%s",m_searchName);
BSTR sql=str.AllocSysString();
m_pRecordset->Close();
m_pRecordset->Open((_variant_t)str,_variant_t((IDispatch*) m__pConnection,true),adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t var;
var = m_pRecordset->GetCollect("Index");
if(var.vt != VT_NULL)
m_index = (LPCSTR)_bstr_t(var);}
catch(_com_error& e)
{
AfxMessage(e.Description()) ;
}
m_pRecordset->Close();
m_pRecordset->Open((_variant_t)str,_variant_t((IDispatch *)m_pConnection,true), adOpenDynamic,adLockOptimistic,adCmdText);
这些语句查询完数据库后,1.怎样获得查询结果的位置,为了获得查询结果的记录.
3.查询前后应该做什么事情?要不要CLOSE(),OPEN()? Open()函数怎么写?
-〉str.Format("SELECT * FROM StudentTable WHERE Name='%s'",m_searchName);
少了半个单引号建议楼主try{}catch{},要不然数据库操作的错误真不好找。
这个就是open。
先判断结果集是否为空,然后可以用MoveNext,MoveLast(先判断isEOF()),MoveFisrt, MovePreView(先判断isBOF(),只向前游标不可用)就可以移动记录指针。
结果集用完后Close()