#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
沒有留言:
張貼留言
(什麼是留言欄訊息?)