ODBC with MFC sample code

不囉嗦,直接看程式
#include <afxdb.h>

//略過超多無關ODBC的程式碼
void CKXdbtestDlg::OnButton1() //在此寫在一個button做測試,可以用其它訊息觸發
{
    //宣告資料庫初始化(指定資料庫及帳密)
    //打開(table, 欄位 = *, R/W);  ??

    CDatabase* kxDB = new CDatabase();  //資料庫本體物件
    kxDB->OpenEx( _T("DSN=MySQL;UID=root;PWD=root"),  //"DSN=ODBC資料來源名稱;UID=帳號;PWD=密碼"
                     CDatabase::openReadOnly | 
                     CDatabase::noOdbcDialog );  //資料庫連線參數(唯讀|無對話框)
    
    CRecordset* kxRecordSet = new CRecordset(kxDB);  //代表指向資料的指標物件
    kxRecordSet->Open( CRecordset::snapshot,      //連線互動方式(是否即時更新??)
                       "SELECT * FROM traveler",  //輸入資炓庫指令
                       CRecordset::none);         //不知道設定什麼的位元遮罩

    kxRecordSet->MoveNext();  //垂直移動,往下一個欄位

    CString str, temp;       //下一行,取得水平儲存格總數(微軟很愛用counter當total)
    for (short i = 0; i < kxRecordSet->GetODBCFieldCount(); ++i)
    {
        kxRecordSet->GetFieldValue(i, temp);  //水平移動,指定其中一個儲存格,並取出該欄位資料
        str += temp + "  ";
    }
    
    m_strShow.SetWindowText(str);

    kxRecordSet->Close();
    kxDB->Close();  //資料庫斷線
}
注意:此程式碼顯示在一個唯讀的controller上,所以沒有測試其寫入的部份。
參考資料:
CDatabase::OpenEx - MSDN
CRecordset::Open - MSDN
CRecordset::MoveNext - MSDN
CRecordset::GetODBCFieldCount - MSDN
CRecordset::GetFieldValue - MSDN

沒有留言:

張貼留言

(什麼是留言欄訊息?)