直接透過DAO讀、寫Access檔案 (轉)
直接透過DAO讀、寫Access
作者:徐景周
:namespace prefix = o ns = "urn:schemas--com::office" />
示例原始碼(?paper_id=383)
直接利用DAO來建立、讀寫Access檔案,總的說來,對比上篇來講,要簡單一些。在下面的示例中,我們將用到兩種方法:和DAO類涵數來混合實現它們,這樣做的目地,我想可以使大家更加方便靈活的運用它們來完成你想要做的東西。在示例中預設指定建立名為:Demo.mdb,內部表名為:DemoTable,寫入兩個欄位:名字和年齡,採用和上一篇讀寫Excel類似的操作,你也可以根據自己需要來動態改變它們。示例程式執行介面如下所示:
下面讓我們來簡要看看它的實現步驟:
1. 首先,應確保包含進了afxdao.h標頭檔案,可以在StdAfx.h檔案中包含它,如下:
#include
2. 宣告DAO庫及其記錄集變數,可在你的實現檔案中加入下面程式碼:
CDaoDatabase db; //資料庫
CDaoRecordset RecSet(&db); //記錄集
3. 接著,先讓我們來實現它的建立及寫入操作
void CRWAccessDlg::OnWriteAccess()
{
//獲取主程式所在路徑,存在sPath中
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind ('');
sPath=sPath.Left (nPos);
//預設建立資料名:Demo.mdb,內部表名:DemoTable,表內有二個欄位:姓名、年齡
CString lpszFile = sPath + "Demo.mdb";
CFileFind fFind;
BOOL bSuccess;
bSuccess=fFind.FindFile(lpszFile);
fFind.Close ();
//是否已有建立好的Demo.mdb檔案,沒有則建立它
if(!bSuccess)
{
db.Create(lpszFile);
CString SqlCmd = "CREATE TABLE DemoTable(Name VARCHAR(20),Age VARCHAR(3));";
db.Execute(SqlCmd);
//開啟已建立的資料表
RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,
" * FROM DemoTable", 0);
//加入第一個記錄,用SQL語句
db.Execute("INSERT INTO DemoTable (Name,Age) VALUES ('徐景周',26)");
//加入第二個記錄,用DAO涵數
RecSet.AddNew();
RecSet.SetFieldValue("Name","徐志慧");
RecSet.SetFieldValue("Age","21");
RecSet.Update();
//加入第三個記錄,用DAO涵數
RecSet.AddNew();
RecSet.SetFieldValue("Name","郭徽");
RecSet.SetFieldValue("Age","27");
RecSet.Update();
//關閉記錄集及庫
RecSet.Close();
db.Close();
AfxMessageBox("Access檔案寫入成功!");
}
else
AfxMessageBox("Demo.mdb資料庫已經建立!");
}
4. 最後,讓我們來實現它的讀取操作。
void CRWAccessDlg::OnReadAccess()
{
COleVariant var; // 欄位型別
var.ChangeType(VT_BSTR, NULL);
CString strName,strAge,strFile;
//清空列表框
m_Acceist.ResetContent();
//獲取主程式所在路徑,存在sPath中
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind ('');
sPath=sPath.Left (nPos);
strFile = sPath + "demo.mdb";
db.Open(strFile); // 開啟已建立的demo資料庫及DamoTable表
RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DemoTable",NULL);
while(!RecSet.IsEOF()) // 有沒有到表結尾
{
RecSet.GetFieldValue("Name",var);
strName = (LPCSTR)var.pbstrVal;
RecSet.GetFieldValue("Age",var);
strAge = (LPCSTR)var.pbstrVal;
m_AccessList.AddString( strName + " --> "+strAge );
RecSet.MoveNext();
}
//關閉記錄集及庫
RecSet.Close();
db.Close();
}
以上部分程式碼的具體實現的細節問題,可在下載例項程式碼後,仔細檢視原始碼既可(內有詳細註釋)。
聯絡方式:
地址:陝西省西安市勞動路2號院六單元
郵編:710082
作者E:">jingzhou_xu@163.net
未來工作室(Future Studio)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992074/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用Jdbc-odbc直接連線access檔案 (轉)JDBC
- UnixWare 7.1.3直接讀取*.iso檔案(轉)
- VB讀寫ini檔案 (轉)
- 透過XSL轉換XML檔案 (轉)XML
- 透過python讀取ini配置檔案Python
- 檔案讀寫
- spark直接讀取本地檔案系統的檔案Spark
- 檔案排版(文字檔案讀寫)
- php百萬資料透過指令碼檔案寫入csvPHP指令碼
- 如何在PL/SQL中讀寫檔案(轉)SQL
- PCX 圖象檔案格式的讀寫 (轉)
- Golang 讀、寫檔案Golang
- keras讀寫檔案Keras
- perl 讀寫檔案
- 檔案讀寫IO
- 檔案的讀寫
- 在linux下怎麼用java,jsp讀寫access的.mdb檔案?LinuxJavaJS
- Json檔案轉換為Excel檔案!涉及讀檔案,時間戳轉化,寫文件JSONExcel時間戳
- 直接透過ODBC API訪問SQL資料庫 (轉)APISQL資料庫
- 讀寫INI檔案的四個函式 (轉)函式
- 直接通過ADO操作Access資料庫資料庫
- 透過trace檔案重新建立控制檔案
- 「Python」:檔案讀寫Python
- Python——檔案讀寫Python
- Python 讀寫檔案Python
- C++檔案讀寫C++
- 普通檔案的讀寫
- 【Java】讀寫文字檔案Java
- c fopen檔案讀寫
- 讀寫iOS XML檔案iOSXML
- Python讀寫檔案Python
- C++讀寫檔案C++
- 通過反射將物件轉化為檔案,同時反向將檔案還原為物件(適用配置檔案讀寫)反射物件
- android直接讀取資料庫檔案Android資料庫
- 轉載:Virtuoso中透過cdsini檔案修改初始設定
- VBA建立文字檔案、讀寫文字檔案
- 檔案操作之按照行讀寫檔案
- 轉化成Access檔案下載的例項