在一个基于对话框的程序中,如何连接Dao的数据库,具体的步骤,谢谢
解决方案 »
- 为什么照着书上的代码打,VS2008还是报错了呢?
- MFC的 标准DLL应用
- 为什么将ComboBox加入到PropertyPage中,对ComboBox的属性设置就不起作用了?
- 好站推荐
- 请问Visual C++是系统软作还是应用软件
- 求助,如何读取网上的一个txt文件
- 哪位有 Visual.Assist.NET.v7.1.0.1101 的有用下载地址
- 在哪里能找到c语言的oci资料?
- 怎样计算X16+X13+X12+X11+X10+X8+X6+X5+X2+1的CRC校验?
- 一百分问题:有关汉字在FlexGrid中的输入,高手进吧,分不够再加!
- 怎么解决"LINK : warning LNK4089: /OPT:REF 已丢弃所有对“SHELL32.dll”的引用"
- 显示数据…………
#include <afxdao.h> //加入DAO数据库支持
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,
"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(); AfxMessageBox("Access文件写入成功!");
}
else
AfxMessageBox("Demo.mdb数据库已经创建!");
}4. 最后,让我们来实现它的读取操作。void CRWAccessDlg::OnReadAccess()
{
COleVariant var; // 字段类型
var.ChangeType(VT_BSTR, NULL);
CString strName,strAge,strFile; //清空列表框
m_AccessList.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();
}