Chinaunix首页 | 论坛 | 博客
  • 博客访问: 149015
  • 博文数量: 40
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 908
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-03 11:03
个人简介

学习linux

文章分类
文章存档

2014年(7)

2013年(33)

我的朋友

分类: C/C++

2013-09-08 11:55:42

在MFC中用ODBC,使对数据库的访问变得非常简单。所以对照做一下,就知道怎么玩了。记住,对数据库的任何
操作都是对记录集的操作来完成的,所以操作前必须先得到记录集。

1. 新建数据库school,再建一张表student,并在windows中注册数据源school,当然也可以在MFC程序中自动注册数据源;

点击(此处)折叠或打开

  1. CString szDesc;
  2. szDesc.Format("DSN=%s|DESCRIPTION=%s|DBQ=%s|FIL=MicrosoftAccess|DEFAULTDIR=%s|",dstName,dstName,dbName,tmpPath);
  3. SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)szDesc);
2. 在MFC程序的StdAfx.h中加入头文件 #include // MFC ODBC database classes

3. 插入类,选择基类为CRecordSet(记录集),类名为Cji;确定后会让你选择数据源,选择school的表student

4. 会生成 ji.cpp,程序会自动将student表中的六个字段映射为六个CString字符串。

点击(此处)折叠或打开

  1. void Cji::DoFieldExchange(CFieldExchange* pFX)
  2. {
  3.     //{{AFX_FIELD_MAP(Cji)
  4.     pFX->SetFieldType(CFieldExchange::outputColumn);
  5.     RFX_Text(pFX, _T("[xuhao]"), m_xuhao);
  6.     RFX_Text(pFX, _T("[quhao]"), m_quhao);
  7.     RFX_Text(pFX, _T("[banben]"), m_banben);
  8.     RFX_Text(pFX, _T("[mima]"), m_mima);
  9.     RFX_Text(pFX, _T("[riqi]"), m_riqi);
  10.     RFX_Text(pFX, _T("[miaoshu]"), m_miaoshu);
  11.     //}}AFX_FIELD_MAP
  12. }
        注意:CString类型默认最大为256字节,所以你的表中如果保存一个文本的话,有可能读不全,可以在表中选择该字段为备注类型,
                  备注类型最大为64KB;再在上图的初始化映射中,指定CString的大小,比如10KB,就ok了。

点击(此处)折叠或打开

  1. RFX_Text(pFX, _T("[shuju]"), m_shuju,10240);
5. 接着就是学习如何操作数据库了,前面说过,是通过记录集进行的,所以要先得到一个记录集,假设表名为jiqi

点击(此处)折叠或打开

  1. Cji recset;
  2. CString sql="select * from jiqi";
  3. recset.Open(CRecordset::dynaset,sql);
6. 对数据库不外乎就是查询,增加,删除,修改。所以就以增加一条记录为例吧。上面的recset就是得到的记录集。

点击(此处)折叠或打开

  1. recset.AddNew();

  2. recset.m_xuhao=xuhao;
  3. recset.m_quhao=quhao;
  4. recset.m_banben=banben;
  5. recset.m_riqi=time;
  6. recset.m_mima=mima;
  7. recset.m_miaoshu=miaoshu;
7. 增加后要更新数据库,再关闭这个记录集。(注意:delete删除记录后不用更新Update,直接close)

点击(此处)折叠或打开

  1. recset.Update();
  2. recset.Close();

8. 还举个查询的例子,查询仅仅需要获得静态只读的记录集就可以了。用forwardOnly即可。

点击(此处)折叠或打开

  1. Cji recset;
  2. recset.Open(CRecordset::forwardOnly,strSql)
再把一条一条记录的字段读出来就OK了。最后关闭这个记录集。

点击(此处)折叠或打开

  1. while(!recset.IsEOF())
  2. {
  3.      recset.GetFieldValue("quhao",str);
  4.      recset.MoveNext();
  5. }
  6. recset.Close();








阅读(2346) | 评论(0) | 转发(0) |
0

上一篇:shell编程

下一篇:linux的开机过程分析

给主人留下些什么吧!~~