Directly read DAO, write Access files
Author: Xu Jing Zhou
Download sample source code (http://www.copathway.com/itbookreview/view_paper.asp?paper_id=383)
Directly use DAO to create, read and write access files, always say, compare the article
Let's briefly look at its implementation steps:
1. First, make sure that it contains an AFXDAO.H header file, you can include it in the stdafx.h file, as follows:
#include
2. Declare the DAO library and its recordset, you can add the following code in your implementation file:
CDAODATABASE DB; // Database
CDAORECORDSET Recset (& DB); // Record Set
3. Next, let's take our creation and write operations first.
Void crwaccessdlg :: OnWriteAccess ()
{
/ / Get the path where the main program is located, there is spath
Cstring spath;
GetModuleFileName (null, spath.getbuffersetlength); max_path), MAX_PATH
Spath.releaseBuffer ();
Int npos;
Npos = spath.reversefind ('//');
Spath = spath.Left (npos);
/ / Create a data name by default: demo.mdb, internal table name: Demotable, two fields in the table: Name, age
CSTRING LPSZFILE = Spath "//demo.mdb";
CFILEFIND FFIND;
Bool bsuCcess;
BSUCCESS = ffind.findfile (lpszfile);
FFIND.CLOSE ();
/ / Do you have created a good demo.mdb file, not creating it
IF (! BSUCCESS)
{
db.create (lpszfile);
CString Sqlcmd = "CREATE TABLE Demotable (Name Varchar (20), Age Varchar (3));";
Db.execute (SQLCMD);
// Open the created data sheet
Recset.open (AFX_DAO_USE_DEFAULT_TYPE,
"SELECT * from demotable", 0);
/ / Add first record, use SQL statement
Db.execute ("INSERT INTO DMOTABLE (Name, AGE) VALUES ('Xu Jingze', 26)")
// Add a second record, use DAO
RecSet.addnew (); recset.setfieldValue ("Name", "Xu Zhihui");
Recset.setfieldValue ("Age", "21");
RECSET.UPDATE ();
// Add a third record, use DAO
RecSet.addnew ();
Recset.setfieldValue ("Name", "Guo Hui");
Recset.setfieldValue ("age", "27");
RECSET.UPDATE ();
// Close record set and library
RECSET.CLOSE ();
db.close ();
AfxMessageBox ("Access file is written in success!");
}
Else
AfxMessageBox ("Demo.mdb database has been created!");
}
4. Finally, let us implement its read operation.
Void CRWACCESSDLG :: OnReadAccess ()
{
Colevariant var; // field type
Var.ChangeType (VT_BSTR, NULL);
CString Strname, StRAGE, STRFILE
// Clear list box
m_accessList.resetContent ();
/ / Get the path where the main program is located, there is spath
Cstring spath;
GetModuleFileName (null, spath.getbuffersetlength); max_path), MAX_PATH
Spath.releaseBuffer ();
Int npos;
Npos = spath.reversefind ('//');
Spath = spath.Left (npos);
Strfile = spath "//demo.mdb";
DB.Open (STRFILE); // Open the created Demo database and Damotable table
Recset.open (AFX_DAO_USE_DEFAULT_TYPE, "SELECT * from Demotable", NULL);
While (! recsets.iseof ()) // Is there a table end?
{
Recset.GetfieldValue ("Name", var);
Strname = (lpcstr) Var.pbstrval;
Recset.GetfieldValue ("Age", VAR);
Strage = (lpcstr) Var.pbstrval;
M_accessList.Addstring (Strname "->" strage);
Recset.movenext ();
}
// Close record set and library
RECSET.CLOSE ();
db.close ();
}
The details of the specific implementation of the above part of the code can be downloaded after downloading the instance code, and the source code can be carefully viewed (in detail).
Contact information:
Email: jingzhou_xu@163.com
Future Studio (Future Studio)