DBConnect();
CRecordset m_RecordSet( &m_DB ); CString m_SQLCmd;
m_SQLCmd.Format( "select Top 1 SN,JobTime,JobNum......) ORDER BY FirstFlag");
try
{ m_RecordSet.Open( AFX_DB_USE_DEFAULT_TYPE,m_SQLCmd,CRecordset::readOnly); struct Table_SendFax * m_SendFax = NULL; m_List->RemoveAll(); 

while( 1 )
{
if ( m_RecordSet.IsEOF() != 0 ) 
{
break;
}

m_SendFax = new struct Table_SendFax; CDBVariant m_DBValue;

g_LogFile.WriteLogFile("Get SendFaxRecord Success!\n");

m_RecordSet.GetFieldValue( "SN", m_DBValue );
if ( m_DBValue.m_dwType != DBVT_NULL ) m_SendFax->SN = m_DBValue.m_iVal;

m_RecordSet.GetFieldValue( "JobTime", m_DBValue );
if ( m_DBValue.m_dwType != DBVT_NULL ) m_SendFax->JobTime = CTime( m_DBValue.m_pdate->year, m_DBValue.m_pdate->month,  m_DBValue.m_pdate->day,
   m_DBValue.m_pdate->hour, m_DBValue.m_pdate->minute, m_DBValue.m_pdate->second );

m_RecordSet.GetFieldValue( "JobNum", m_DBValue );
if ( m_DBValue.m_dwType != DBVT_NULL ) m_SendFax->JobNum = m_DBValue.m_iVal;
m_List->AddTail( m_SendFax );  m_RecordSet.MoveNext();
}

m_RecordSet.Close(); if (m_List->GetCount()>0)
{
m_SQLCmd.Format( "UPDATE SendFax SET SendingFlag = 1 WHERE SN = %d or Called = '%s' ",m_SendFax->SN,m_SendFax->Called );
m_DB.ExecuteSQL( m_SQLCmd ); 
}
} catch( CDBException * DBExce )
{
sprintf(Info, "GetSendFaxRecord Error: %s, SQL:%s\n", DBExce->m_strError, m_SQLCmd );
        g_LogFile.WriteLogFile(Info);
if ( m_RecordSet.IsOpen() != 0 ) m_RecordSet.Close();
if ( m_DB.IsOpen() != 0 ) m_DB.Close();
}这是我用VC6.0编的一个传真服务中的一个访问数据库的以部分(SQL SERVER),但是有时候(可能运行了好几天也可能是一个月)会出这个错误:
Mon Oct 31 12:42:02  To GetSendFaxRecord!
Mon Oct 31 12:42:28  GetSendFaxRecord Error: 超时已过期
, SQL:select Top 1 SN,JobTime,JobNum......
并会弹出错误信息:
弹出应用程序: faxservice.exe - 应用程序错误: "0x00558b5b" 指令引用的 "0x6d6f7266" 内存。该内存不能为 "read"。要终止程序,请单击“确定”。
要调试程序,请单击“取消”。请问这是怎么回事???