vs2008下用c++代码实现ACCESS的访问(DAO方式)

1、首先,在头文件中包含#include 头文件;

2、在对话框界面上增肌一个listBox控件,用来显示读取出来的数据;

3、增加一个写ACCESS的函数,该函数中检查若数据库已经存在,则直接写入记录,若数据库不存在,先创建数据库。

void CtestAccessDlg::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,
"SELECT * 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();


}
else
{
db.Open(lpszFile); // 打开已创建的demo数据库及DamoTable表
//RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DemoTable",NULL);


//打开已创建的数据表
RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,
"SELECT * 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();
}


}


4、增加读ACCESS的函数:

void CtestAccessDlg::OnReadAccess() 
{
COleVariant var; // 字段类型
var.ChangeType(VT_BSTR, NULL);
CString strName,strAge,strFile; 


//清空列表框
m_listBox.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_listBox.AddString( strName + " --> "+strAge );


RecSet.MoveNext();
}


//关闭记录集及库
RecSet.Close();
db.Close();
}


5、增加两个按钮,分别为读ACCESS按钮和写ACCESS按钮,在按钮的处理函数中分别调用上述的两个函数。


本文关联代码下载:http://download.csdn.net/detail/dafenqie/9704484


你可能感兴趣的:(MFC)