background image

                               VC++数据库之我见
                                 

  当今社会正在高速发展,是个信息爆炸的时代,许多应用程序都需要使用数据库技术来保存和维护应用程序和
处理的数据。为顺应这种发展需求,

VC++提供了四种不同的技术来使应用程序访问数据库,即 DAO、ODBC、OLE 

DB 和 ADO。
  我们在学习了 VC++这门课程之后,虽然学习到了很多东西,也开阔了我们的眼界,但也让我们认识到我们的所
学不过是沧海一粟。古希腊的芝诺说过:人对世界的认识就是一个圆的范围,圆越大接触的未知也就越多。所以
我通过自己的上网搜索,看了别人的文章学习了一些课本之外的知识,站在强人的肩膀上看世界,或许某天我们
亦能成为强者。
  以下是李建国教授在 DAO 数据库编程中积累的经验,对我们今后使用 DAO 进行开发能有所帮助。如何在新建时

 

没选数据库支持的程序中加入数据库支持 以对话框

DAO-Access 为例: 1.1 用类向导新建类.Name:"mydb", 

Base Class:"DaoRecordset",选择正确的数据源和表. 注:vc6 无法直接对 access2000 进行支持,要用的
话先转换为

97

 

版才行。

1.2 在 mydb 头文件加入#include"afxdao.h".在对话框类头文件加入

#include"mydb.h". 1.3 测试:在对话框类加入一按钮,在其响应函数内加入如下代码: mydb db; 

db.Open(); MessageBox(db.m_answerA); db.Close(); 这里假设我的数据库表里有 answerA 字段. 
二、如何在数据库没有静态绑定其他控件的程序手工加入静态绑定

. 仍以上面为例.先把先前的按钮及其消息处理

函数删掉

.加入一 EDIT 控件. 2.1 声明:在对话框头文件的 AFX_DATA 内加入:mydb* rec;如下: //

{{AFX_DATA(CAaaDlg) enum { IDD = IDD_AAA_DIALOG }; mydb* rec; // NOTE: the 

ClassWizard will add data members here //}}AFX_DATA 2.2 绑定:在类向导为 edit 控件添成员
变量

m_amswerA.(在向导中选择) 2.3 初始化:

 

在对话框构造函数内加入

rec=new mydb; rec->Open(); 

2.4 销毁:响应对话框 WM_CLOSE 消息,加入消息处理代码: rec->Close(); delete rec; 2.5 测试:编译
运行

,就可以看到 EDIT 框里出现了数据库的内容.唯一不足的是不能自动更新显示.需手工 UpdateData(0); 三、

如何确保上述程序拷到别人机里仍可运行

.(数据库也拷在同一目录) 把刚才 mydb 类 GetDefaultDBName()函

数内容改为

: char str[255]; GetCurrentDirectory(255,str); strcat(str,"\\my.mdb"); 

return _T(str);虽然 DAO 逐渐被 ADO 所取代,ADO 的技术和兼容性都比 DAO 好.速度也比 DAO 快,但是我觉
得我们对于

DAO 的发展也需要有一个了解。人类不就是从简陋中进步,发展到今天越来越简洁越来越高速化的时

代么。
  我还从编程世界网站上看到了一个新的词语叫堆栈。它的概念简单,编写也比较简单。有这么一个情况,桌子
上有堆成一堆的

5 本书,你想增加一本。应该怎么做?只要把书放在顶端就可以了。如果你想从这堆书中取出第 3

本呢

?你只要一本接着一本把书移到顶端,直到第 3 本书处在顶端。然后取走第 3 本书,并使其他处在顶端。顶端

(栈顶)对于堆栈至关重要的。堆栈只允许从顶端加入数据,出栈/退栈也是从栈顶。就是这么简单。那什么情况使
用堆栈

?堆栈被用在每一个进程中。每一个进程都一个堆栈,数据和地址从堆栈中被取出来/添加进来。栈顶规则

在这里也符合。

ESP Register 添加一个指针,指向栈顶。向堆栈插入新元素成为入栈,从堆栈中删除元素成为

出栈。虽然对于作者下面引用编写的片段不甚理解。。。但是我可以理解为我学到了一种模式,一种思维的模式。
有句话说得好:程序是死的,思维是活的,我们可以让活跃的思维让程序鲜活。这是我从中学到的。
  为了今后在 VC++的学习中能有到更高的效率,我看了一位叫风盈袖的作者的 BLOG,是谈谈学好 VC++的良好
习惯。

(一)充分利用 MSDN,因为我个人觉得它胜过任何一本编程参考书;MSDN 是 Microsoft 当前提供的有关编

程信息的最全面的资源,它包含微软最新的技术数据库,加上易学易用的全文检索功能,让您迅速找到任何您需
要的技术参考数据。

(二)提高英文水平,养成多上英文网站多看英文资料多买老外原版英文书。三)加强自我管理,

善于作自我总结,分析自已的优点及缺点。

(四)养成良好的文档习惯。良好的文档是正规研发流程中非常重要的

环节,一个好的程序是先写好设计文档再进行编程的,在设计文档的指导下,才能写出安全的代码。

(五)代码风

格要规范,严谨,效率要高。

(六)掌握好跟踪调试技巧。跟踪调试程序是一件繁琐而又复杂的事情,所以掌握必

要的调试策略及技巧却可以使这些工作变得轻松起来。

(七)养成自我测试的习惯。(八)善于交流善于沟通,特别

是经常与一些高手交流一下学习的心得体会。这八条虽然没有涛哥八荣八耻那样天天唱,但是对于一个学程序的
人来说可以循路而进,毕竟我们不是鲁迅那样能披荆斩棘自己开路。总归来说,有指引总是好的。
  此上即为我的论文,有点简陋,也有点匆忙。。学习 VC++的路还很长,我们课本的只是只不过是沧海一粟,正

“ ”

所谓熟读唐诗三百首,不会作来也会 偷 ,学习课外的知识为自己充电也是学好

VC++关键。路漫漫其修远兮,吾

将上下而求索。