请问一个关于MFC访问ADO的有关问题

请教一个关于MFC访问ADO的问题
这个程序 提出了4条数据 但是取第一次数据后就到EOF了,第一次数据取得是第一条。我想知道哪里错了 为什么不能遍历 谢谢

这个是出错的地方

CComboBox* myCOmboBox1=(CComboBox*)GetDlgItem(ID_START_NAME) ;
CComboBox* myCOmboBox2=(CComboBox*)GetDlgItem(ID_DESTINATION_NAME) ;
 _variant_t var; 
 CString new_info;
 try
 {
 theApp.myPort.m_pRecordset->MoveFirst();
 while(!theApp.myPort.m_pRecordset->BOF&&!theApp.myPort.m_pRecordset->EndOfFile)
{
var = theApp.myPort.m_pRecordset->GetString("place_name");
if(var.vt != VT_NULL)
{
new_info = (LPCSTR) bstr_t(var);
myCOmboBox1->AddString(new_info);
  myCOmboBox2->AddString(new_info);
}
theApp.myPort.m_pRecordset->MoveNext();
 }
 }

这个是连接的地方
port::port(){
try
{
CoInitialize(NULL); 
// 初始化OLE/COM库环境 ,为访问ADO接口做准备
m_pRecordset = new _RecordsetPtr ("ADODB.Recordset");
m_pConnection = new _ConnectionPtr ("ADODB.Connection");
_bstr_t bstrSQL("select * from place;"); 
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串
_bstr_t strConnect="Provider=IBMDADB2;DATABASE=GUIDE;PROTOCOL=TCPIP;HOSTNAME=local";
m_pConnection->Open(strConnect,"","",adModeUnknown);
if(m_pConnection==NULL)
// 创建记录集对象
m_pRecordset.CreateInstance(_uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error ex){
}
}
------最佳解决方案--------------------
这一句好像有问题吧
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
adOpenDynamic换成adOpenStatic试试
------其他解决方案--------------------
while(!theApp.myPort.m_pRecordset->BOF&&!theApp.myPort.m_pRecordset->EndOfFile)

为什么要判断2次??
断点这个地方查问题
------其他解决方案--------------------
while(!theApp.myPort.m_pRecordset->EOF)