|
AppBuilder中进行直接ODBC API数据库调用访问的基本方法!(6) dbdata.m_Ariqi.month, dbdata.m_Ariqi.day, dbdata.m_Ariqi.hour, dbdata.m_Ariqi.minute, dbdata.m_Ariqi.second);
m_Record.m_Njine = dbdata.m_Njine; m_Record.m_Ashuoming = dbdata.m_Ashuoming; m_Record.m_Alaiyuan = dbdata.m_Alaiyuan; m_Record.m_Acunzhe = dbdata.m_Acunzhe; m_Record.m_Ayongtu = dbdata.m_Ayongtu; m_Record.m_Axiaofei = dbdata.m_Axiaofei; m_Record.m_Abeizhu = dbdata.m_Abeizhu;
} } ::SQLFreeHandle(SQL_HANDLE_STMT,hstmt);
其中,如果cb1、cb2、cb3、cb4、cb5、cb6、cb7、cb8、cb9是接受返回的数据的大小的,如果他们的值等于SQL_NULL_DATA,那么表示此记录的这个字段的值为空。
2、块绑定 CStuffbasicdataQry::CStuffbasicdataQry(CODBCDatabase* pDB) : m_nRowSetSize(1000), m_pDatabase(pDB) { m_hstmt = SQL_NULL_HSTMT; RETCODE ReturnCode = SQLAllocHandle(SQL_HANDLE_STMT, m_pDatabase->GetHDBC(), &m_hstmt); if (ReturnCode != SQL_SUCCESS) TRACE("Unable to allocate Statement Handle in CTtttempSet\n"); }
CStuffbasicdataQry::~CStuffbasicdataQry() { Reset(); if (m_hstmt) SQLFreeHandle(SQL_HANDLE_STMT, m_hstmt); } void CStuffbasicdataQry::Reset() { if (m_hstmt) SQLFreeHandle(SQL_HANDLE_STMT, m_hstmt); for (int i = 0; i < m_aData.GetSize(); i++) delete m_aData.GetAt(i); m_aData.RemoveAll(); } int CStuffbasicdataQry::Load() { CString strSQLString; //RETCODE ReturnCode; UDWORD RowsFetched; UWORD *pRowStatus; pFF_DB_STUFFBASICDATAQRY_FIELDS pHostData;
ASSERT(m_nRowSetSize > 0); pRowStatus = new UWORD[m_nRowSetSize]; ASSERT(pRowStatus); pHostData = new FF_DB_STUFFBASICDATAQRY_FIELDS[m_nRowSetSize]; ASSERT(pHostData);
SQLSetStmtOption(m_hstmt,SQL_BIND_TYPE,sizeof(FF_DB_STUFFBASICDATAQRY_FIELDS)); SQLSetStmtOption(m_hstmt,SQL_CONCURRENCY,SQL_CONCUR_READ_ONLY); SQLSetStmtOption(m_hstmt,SQL_CURSOR_TYPE,SQL_CURSOR_KEYSET_DRIVEN); SQLSetStmtOption(m_hstmt,SQL_ROWSET_SIZE,m_nRowSetSize);
strSQLString.Format( "SELECT * " " FROM STUFFBASICDATA");
|