直接通过DAO读写Access文件

商丘河南那么多

商丘河南那么多

2016-02-19 13:31

今天图老师小编给大家展示的是直接通过DAO读写Access文件,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!

  直接利用DAO来创建、读写Access文件,总的说来,对比上篇《直接通过ODBC读、写Excel文件》来讲,要简单一些。在下面的示例中,我们将用到两种方法:SQL和DAO类函数来混合实现它们,这样做的目地,我想可以使大家更加方便灵活的运用它们来完成你想要做的东西。在示例程序中默认指定创建数据库名为:Demo.mdb,内部表名为:DemoTable,写入两个字段:名字和年龄,采用和上一篇读写Excel类似的操作,你也可以根据自己需要来动态改变它们。示例程序运行界面如下所示:

  下面让我们来简要看看它的实现步骤:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  1. 首先,应确保包含进了afxdao.h头文件,可以在StdAfx.h文件中包含它,如下:

  #include afxdao.h         //加入DAO数据库支持

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  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();
}以上部分代码的具体实现的细节问题,可在下载实例代码后,仔细查看源码既可(内有详细注释)。
展开更多 50%)
分享

猜你喜欢

直接通过DAO读写Access文件

编程语言 网络编程
直接通过DAO读写Access文件

VB通过DAO访问Access数据库

编程语言 网络编程
VB通过DAO访问Access数据库

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

DAO访问ACCESS数据库

编程语言 网络编程
DAO访问ACCESS数据库

用Jdbc-odbc直接连接access文件

编程语言 网络编程
用Jdbc-odbc直接连接access文件

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

FileSystemObject读写文件

编程语言 网络编程
FileSystemObject读写文件

INI文件的读写

编程语言 网络编程
INI文件的读写

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

MS SQL Server和Access分别取得随机记录(随机抽题)之完美篇

MS SQL Server和Access分别取得随机记录(随机抽题)之完美篇

如何保存网页中的Flash文件?

如何保存网页中的Flash文件?
下拉加载更多内容 ↓