直接通过DAO读写Access文件

2016-02-19 13:31 101 1 收藏

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

【 tulaoshi.com - 编程语言 】

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

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

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

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

  #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();

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)//加入第三个记录,用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();
}以上部分代码的具体实现的细节问题,可在下载实例代码后,仔细查看源码既可(内有详细注释)。

来源:http://www.tulaoshi.com/n/20160219/1604542.html

延伸阅读
java中多种方式读文件 一、多种方式读文件内容。 1、按字节读取文件内容 2、按字符读取文件内容 3、按行读取文件内容 4、随机读取文件内容 */ import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import ...
    同步(Synchronization)是数据库在网络环境中应用所要涉及到的一个重要概念。其基本过程大致分以下几个步骤:首先把一个数据库设为可复制副本属性,使其成为设计正本(VB中称设计原版,ACCESS中称设计母版);然后根据应用程序的实现需要从设计正本复制出多个副本(VB中称复本),这些副本组成一个副本集合(设计正本也被...
一、基本概念 在Android应用中保存文件,保存的位置有两处 ①手机自带的存储空间,较小(如200M),适合保存一些小文件,Android中保存位置在data/data/应用包名/files目录 ②外存储设备如SD卡,较大,适合保存大文件如视频,Android中保存位置在mnt/sdcard目录,androd1.5,android1.6保存在sdcard目录 保存的位置通过android的file explor...
COBOL语言是什么 它是常用语是一种不常用的变成语言,在大众眼中并不被熟知,COBOL语言大多运用在数据的收集。如现在常用的银行、企业统计等领域。常见操作界面即是DOS和UNIX界面,相对windows编程平台过于单一,但是也是非常好就业的方面。 cobol语言常用吗 就现在来说cobol语言并不常用语人们所见的编程语言范围,学习难度...
  MySQL是当前最流行的网络数据库,其中的原因包括: 运行速度快 免费 能运行在Linux及其他的一些平台 能与Apache(一种流行的网络服务器)完美结合 能与 PHP完美结合 MySQL具有一个ODBC接口。如果你操作的是网络服务器或MySQL服务器,并想把数据关联到桌面应用程序,采用ODBC接口是一个很好的方式。但如果你不是对服务器操作,访问MyS...

经验教程

410

收藏

19
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部