我用ADO连接SQL SERVER ,可以成功读出数据,
#include "icrsint.h"
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF", "adoBOF")
_RecordsetPtr myset;//定义
但myset->adoEOF不起作用,不能检测到是记录尾,结果循环时候就出现崩溃,编译能通过,但分步调试时候报错:overloaded operator -> not supported,不知道怎么回事啊
#include "icrsint.h"
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF", "adoBOF")
_RecordsetPtr myset;//定义
但myset->adoEOF不起作用,不能检测到是记录尾,结果循环时候就出现崩溃,编译能通过,但分步调试时候报错:overloaded operator -> not supported,不知道怎么回事啊
myset->get_EOF(&eof);如果是因为这个,那我真是...
http://codeguru.earthweb.com/mfc_database/ADOX_in_details.html
{
myset->MoveNext();
........
_variant_t value=myset->GetCollect("au_id");
_variant_t value1=myset->GetCollect("au_lname");
_variant_t value2=myset->GetCollect("city");
m_type=(char*)_bstr_t(value);
m_departure=(char*)_bstr_t(value1);
m_aim=(char*)_bstr_t(value2);
UpdateData(false);
}
这样用的时候就不起作用!结果蹦出个abnormal program termination
adOpenForwardOnly
adOpenKeyset
adOpenDynamic
adOpenStatic
单布调试是调试到myset->adoEOF时出错吗?
UpdateData(false)是更新窗口?还是Update()而你写错了?如果是更新窗口试试加上一个Update()试试(好像ADO里如果用MoveNext,记录集是可以自动保存的,不过VC中不知道会不会自动保存,因为我一直都用Update的,呵呵)。PS:get_EOF(VARIANT_BOOL)我试过没出错(不过我没用#import,用#include的):
VARIANT_BOOL eof;
myset->get_EOF(&eof)
while (!eof)
{
...
myset->get_EOF(&eof);
}
{
........
_variant_t value=myset->GetCollect("au_id");
_variant_t value1=myset->GetCollect("au_lname");
_variant_t value2=myset->GetCollect("city");
m_type=(char*)_bstr_t(value);
m_departure=(char*)_bstr_t(value1);
m_aim=(char*)_bstr_t(value2);
UpdateData(false);
myset->MoveNext();
}
这样可以吗?
HRESULT hr;
hr=myset->get_EOF(&eof);
if (FAILED(hr))
MessageBox("First get failed");
while (!eof)
{
...
...
hr=myset->get_EOF(&eof);
if (FAILED(hr))
MessageBox("Looping get failed");
}希望能帮帮忙,谢谢。
抱歉,这两天有事情没来,那个代码调试如下D:\ado\adoDlg.cpp(389) : error C2039: 'getEOF' : is not a member of '_Recordset'
d:\ado\debug\msado15.tlh(1693) : see declaration of '_Recordset'
D:\ado\adoDlg.cpp(395) : error C2039: 'get_EOF' : is not a member of '_Recordset'
d:\ado\debug\msado15.tlh(1693) : see declaration of '_Recordset'
Error executing cl.exe.
Creating browse info file...ado.exe - 2 error(s), 0 warning(s)
建议查一下此行:
myset->Open("select * from authors",mydb.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
用调试手段看一下此句是否被执行,如果此句没有被执行或在程序中被跳过的话,try{while(!MySet-〉adoEOF)肯定要出问题。