你是什么连接方式?以下是odbc的CDatabase db; db.OpenEx( NULL, CDatabase::forceOdbcDialog );// Create and open a recordset object // directly from CRecordset. Note that a // table must exist in a connected database. // Use forwardOnly type recordset for best // performance, since only MoveNext is required CRecordset rs( &db ); rs.Open( CRecordset::forwardOnly, _T( "SELECT * FROM SomeTable" ) );// Create a CDBVariant object to // store field data CDBVariant varValue;// Loop through the recordset, // using GetFieldValue and // GetODBCFieldCount to retrieve // data in all columns short nFields = rs.GetODBCFieldCount( ); while( !rs.IsEOF( ) ) { for( short index = 0; index < nFields; index++ ) { rs.GetFieldValue( index, varValue ); // do something with varValue } rs.MoveNext( ); }rs.Close( ); db.Close( );
db.OpenEx( NULL, CDatabase::forceOdbcDialog );// Create and open a recordset object
// directly from CRecordset. Note that a
// table must exist in a connected database.
// Use forwardOnly type recordset for best
// performance, since only MoveNext is required
CRecordset rs( &db );
rs.Open( CRecordset::forwardOnly,
_T( "SELECT * FROM SomeTable" ) );// Create a CDBVariant object to
// store field data
CDBVariant varValue;// Loop through the recordset,
// using GetFieldValue and
// GetODBCFieldCount to retrieve
// data in all columns
short nFields = rs.GetODBCFieldCount( );
while( !rs.IsEOF( ) )
{
for( short index = 0; index < nFields; index++ )
{
rs.GetFieldValue( index, varValue );
// do something with varValue
}
rs.MoveNext( );
}rs.Close( );
db.Close( );
SQLHENV m_hEnv;
SQLHDBC m_hDbc;
char szFile[SQL_MAX_MESSAGE_LENGTH] = "alskdfjalskdf";
const char *pDriver = "asldfkjasdf";
if ( TRUE != SQLConfigDataSource( NULL, ODBC_CONFIG_DSN, pDriver, szFile ) )
{
if ( TRUE != SQLConfigDataSource( NULL, ODBC_ADD_DSN, pDriver, szFile ) )
{
THROWISTERROR();
}
}
SQLRETURN rc;
SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &m_hEnv );
SQLSetEnvAttr( m_hEnv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0 );
SQLAllocHandle( SQL_HANDLE_DBC, m_hEnv, &m_hDbc );
SQLSetConnectAttr( m_hDbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0 );
rc = SQLConnect( m_hDbc, (SQLCHAR*)"dnsname", SQL_NTS, NULL, 0, NULL, 0 );
if ( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO )
{
throw 0;
}
SQLRETURN rc;
SQLHSTMT hStmt;
char szStmt[1024] = "SELECT * FROM ";
strcat( szStmt, m_szTable );
strcat( szStmt, " WHERE NUM=" );
itoa( m_nQueryNum, szStmt + strlen( szStmt ), 10 );
rc = SQLAllocHandle( SQL_HANDLE_STMT, m_hDbc, &hStmt );
if ( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO )
{
THROWSQLERROR( SQL_HANDLE_DBC, m_hDbc );
}
rc = SQLExecDirect( hStmt, (SQLCHAR*)szStmt, SQL_NTS );
if ( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO )
{
THROWSQLERROR( SQL_HANDLE_STMT, hStmt );
}
char szBuild[32];
char szRoom[32];
char szOffice[32];
char szPart[32];
char szName[32];
char szJob[32];
char szDial[32];
char szExt[32];
SQLLEN sl;
rc = SQLBindCol( hStmt, 3, SQL_C_CHAR, szBuild, 32, &sl );
if ( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO )
{
THROWSQLERROR( SQL_HANDLE_STMT, hStmt );
}
rc = SQLBindCol( hStmt, 4, SQL_C_CHAR, szRoom, 32, &sl );
rc = SQLBindCol( hStmt, 5, SQL_C_CHAR, szOffice, 32, &sl );
rc = SQLBindCol( hStmt, 6, SQL_C_CHAR, szPart, 32, &sl );
rc = SQLBindCol( hStmt, 7, SQL_C_CHAR, szName, 32, &sl );
rc = SQLBindCol( hStmt, 8, SQL_C_CHAR, szJob, 32, &sl );
rc = SQLBindCol( hStmt, 9, SQL_C_CHAR, szDial, 32, &sl );
rc = SQLBindCol( hStmt, 10, SQL_C_CHAR, szExt, 32, &sl );
int nIndex = 0;
HWND hOffice = GetDlgItem( m_hDlg, IDC_LISTOFFICE );
HWND hPeople = GetDlgItem( m_hDlg, IDC_LISTPEOPLE );
while ( true )
{
ZeroMemory( szDial, sizeof(szDial) );
ZeroMemory( szOffice, sizeof(szOffice) );
rc = SQLFetch( hStmt );
if ( rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO )
{
if ( nIndex == 0 )
{
AddListItem( hOffice, 0, 2, "办公室名:", szOffice );
AddListItem( hOffice, 1, 2, "隶属部门:", szPart );
AddListItem( hOffice, 2, 2, "房间号:", szRoom );
AddListItem( hOffice, 3, 2, "所在楼号:", szBuild );
}
AddListItem( hPeople, nIndex, 4, szName, szJob, szDial, szExt );
}
else if ( rc == SQL_NO_DATA )
{
break;
}
else
{
THROWSQLERROR( SQL_HANDLE_STMT, hStmt );
}
nIndex++;
}
SQLFreeHandle( SQL_HANDLE_STMT, hStmt );
Microsoft Access Driver (*.mdb)
#include <Sql.h>
#include <SqlExt.h>
#include <odbcinst.h>再在实现文件的头里加上下面的一行:
#pragma comment( lib, "odbc32.lib" )