1.问题一
CDatabase m_database;//数据源
CMonitorData *m_recordSet;//记录集
try
{
m_database.Open(FALSE,FALSE,FALSE,"ODBC;DSN=Centralized;UID=sa;PWD=123456;SERVER=127.0.0.1,1433");
}
catch(CDBException ex)
{
MessageBox(ex.m_strError);
}
m_recordSet=new CMonitorData(&m_database);
CString m_strQuery="select MacAddress,LineName,Status from monitordata "
"where convert(char(10),datetime,101)='2011-04-27' and MacAddress='74060B5A' order by datetime desc";
try{
m_recordSet->Open(AFX_DB_USE_DEFAULT_TYPE,m_strQuery,CRecordset::dynaset);
}
catch(CDBException ex){
AfxMessageBox(ex.m_strError);//这里报错了呀,难道MFC的ODBC编程不可以这样写SQL查询语句吗?
}
2.问题二
CRecorder 子类中定义的field必须查询的的时候,全部用到吗?否则就会报错吗?
有没有什么办法可以不全部查询呀?
3.问题三
CRecorder::GetRecordCount()怎么总是返回1,而不是实际查询到的行数呀?
CDatabase m_database;//数据源
CMonitorData *m_recordSet;//记录集
try
{
m_database.Open(FALSE,FALSE,FALSE,"ODBC;DSN=Centralized;UID=sa;PWD=123456;SERVER=127.0.0.1,1433");
}
catch(CDBException ex)
{
MessageBox(ex.m_strError);
}
m_recordSet=new CMonitorData(&m_database);
CString m_strQuery="select MacAddress,LineName,Status from monitordata "
"where convert(char(10),datetime,101)='2011-04-27' and MacAddress='74060B5A' order by datetime desc";
try{
m_recordSet->Open(AFX_DB_USE_DEFAULT_TYPE,m_strQuery,CRecordset::dynaset);
}
catch(CDBException ex){
AfxMessageBox(ex.m_strError);//这里报错了呀,难道MFC的ODBC编程不可以这样写SQL查询语句吗?
}
2.问题二
CRecorder 子类中定义的field必须查询的的时候,全部用到吗?否则就会报错吗?
有没有什么办法可以不全部查询呀?
3.问题三
CRecorder::GetRecordCount()怎么总是返回1,而不是实际查询到的行数呀?
SQL语句拿到查询分析器中执行试试!
显示什么错误?
查询语句换成CString m_strQuery="select * from monitordata ";
难道是CMonitorData所有列多必须查询才不会报错吗?有什么办法解决吗?
如果依旧使用,而且不改变CMonitorData中的列?
CString m_strQuery="select MacAddress,LineName,Status from monitordata "
"where convert(char(10),datetime,101)='2011-04-27' and MacAddress='74060B5A' order by datetime desc";