`
ladymaidu
  • 浏览: 680713 次
文章分类
社区版块
存档分类
最新评论

编程要准确理解程序里面的逻辑

 
阅读更多
朱金灿
晚上一位朋友问我有关ado访问数据库的问题。说实话我已经有相当一段时间没有做数据库了,感觉把知识忘得差不多了。
朋友的程序是这样的:
int CGMSDlg::LoginCheck(CString strID, CString strPwd)
{
if( m_adoConnection.Open("GMS.mdb")==FALSE )
{
return LINK_FAILURE;
}
m_adoRecordset.SetAdoConnection(&m_adoConnection);
m_adoRecordset.PutCursorLocation(adUseClient);
if( m_adoRecordset.Open("users", adCmdTable)==FALSE )
{
return LINK_FAILURE;
}
if( m_adoConnection.BeginTrans()==BEGINTRANS_FAILURE )
{
return LINK_FAILURE;
}
////查找用户名
m_strFind.Format("SELECT pwd FROM users WHERE id=/"%s/"",strID);
if ( m_adoRecordset.Find(m_strFind)==FALSE )
{
return WRONG_ID;
}
////若找到,取出用户密码,和登录密码进行比较
if( m_adoRecordset.GetCollect("pwd", m_varValue)==FALSE
|| strcmp(strPwd, (_bstr_t)m_varValue)!=0 )
{
return WRONG_PWD;
}
m_strUserName = m_adoRecordset.GetCollect("name",m_varValue);
m_strUserName = (LPCSTR)(_bstr_t)m_varValue;
return CHECK_PASS;
}
这里的m_adoConnection是ado中的_ConnectionPtr一个封装类的实例,m_adoRecordset是_RecordsetPtr一个封装类的实例(我个人感觉没必要对ado进行封装)。
我觉得朋友没有准确理解程序的逻辑。比如m_adoRecordset.Find函数(其实是封装_RecordsetPtr的Find函数),它的参数放的就不是sql语句,而是查询条件。更为关键的问题是他没有理解ado的内在逻辑。其实我们看到对某个记录取字段值,都是基于查询结果集的。那么下面一段代码:
m_strFind.Format("SELECT pwd FROM users WHERE id=/"%s/"",strID);
if ( m_adoRecordset.Find(m_strFind)==FALSE )
{
return WRONG_ID;
}
看似是比较ID,但实际上执行sql语句的结果记录集却没有id这一项,这显然是不符合逻辑嘛。
我觉得,在现在很多库层层封装之下,学会理解被封装的程序的内在逻辑对开发人员尤为重要。
分享到:
评论

相关推荐

    mbot机器人巡线程序-mBot机器人编程——用机器人的逻辑思考问题.pdf

    mbot机器⼈巡线程序_mBot机器⼈编程——⽤机器⼈的逻辑思 考问题 mBot机器⼈编程 ——⽤机器⼈的逻辑思考问题 ⽂/陈林 提到机器⼈,想必⼤家都不会陌⽣。但如果问到什么是机器⼈时,似乎⼼中的答案并不是那么的确切...

    什么是面向对象的程序设计

    (其它的编程范型例如函数式编程或过程式编程专注于程序运行的过程,而逻辑编程专注于引发程序代码执行的断言) 对面向模拟系统的语言(如:SIMULA 67)的研究及对高可靠性系统架构(如:高性能操作系统和CPU的架构...

    "蓝桥杯"练习题解,包括各种算法

    1. 竞赛题目概述:对每道题目的背景、要求和输入输出格式进行介绍,确保学生对题目有全面准确的理解。 2. 思路分析:重点剖析题目的解题思路,包括算法设计、数据结构应用等,帮助学生掌握解题的核心逻辑。 3. 代码实现...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    5.6 建立逻辑表达式 126 5.7 小结 136 第6章 SQL执行计划 137 6.1 解释计划 137 6.1.1 使用解释计划 137 6.1.2 理解解释计划可能达不到目的的方式 143 6.1.3 阅读计划 146 6.2 执行计划 148 6.2.1 查看最近...

    BBC micro:bit Recipes.pdf

    使用这个开源平台,您将学习如何以一种易于理解的方式编程,从而轻松地转化为现实世界的编程。BBC微观世界:BITRECPES是一个实用的指南,有一个解决问题的方法.它为使用MakeCode的微:位应用程序开发问题提供了准确...

    iOS计算器的算法技术

    当用户输入数字和运算符时,计算器程序会将这些信息转化为计算机可以理解的格式,并按照运算优先级进行解析。这个过程涉及到了算法设计和数据处理的关键技术。为了确保计算的准确性,计算器还会对用户的输入进行校验...

    完成Java面向对象程序设计实验课的心得体会.doc

    一切都是为了让人明白,有能让机器理解的思想我 想分析和抽象能力的高低是个关键,首先要从问题域分析和抽象出准确的对象模型,再 根据这些模型进行处理,当然在过程种少不了楼上前辈们说的一些思想和细节,但是别 ...

    完成Java面向对象程序设计实验课的心得体会(1).doc

    一切都是为了让人明白,有能让机器理解的思想 我想分析和抽象能力的高低是个关键,首先要从问题域分析和抽象出准确的对象模型, 再根据这些模型进行处理,当然在过程种少不了楼上前辈们说的一些思想和细节,但是 别...

    Java高级程序设计-多线程(二).pptx

    掌握同步代码块的使用 掌握同步方法的使用 理解线程死锁 掌握 ThreadLocal 类的使用 使用多线程模拟猴子采花 使用同步方法模拟购票 使用多线程模拟购物订单生成 使用 ThreadLocal 类模拟银行取款 Java高级程序设计-...

    java毕业设计之汽车租赁管理系统.zip

    需求分析是发现需求,分析求精,逻辑建模,需求规约的过程,其的目的是为了全面获取软件需求,准确理解业务逻辑。车辆租赁系统具有以下基本功能。 1.用户管理: 包括用户的注册,登陆等,没有账户的用户可以注册会员...

    软件工程-理论与实践(许家珆)习题答案

    ● 编程(用程序语言实现每个模块,简单容易); ● 测试(发现并改正错误,分为模块测试、集成测试和系统联调三级); ● 运行维护(扩充功能、纠错等)。 习题二答案 一、 选择题 1. 需求分析的主要目的是(B C)...

    软件工程知识点

    需求有效性验证是指对已经产生的需求结论所要进行的检查与评价。一般需要对需求文档草稿从有效性、一致性、完整性、现实性、可检验性等几个方面进行有效性验证。比较常用的需求有效性验证方法与工具包括:需求评审、...

    计算机二级C语言考试题预测

    (66) 为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为(B) 注:P82 A. PAD图 B. N-S图 C. 结构图 D. 数据流图 (67) 数据处理的最小单位是(C) 注:数据项不可再...

    计算机信息处理综合作业考核大纲.doc

    文档力求简明扼要,条理清晰,准确反 映作者对课题的理解、完成作业所采用的技术、使用的软件及版本、课题难点和解决的 方法等。文档的内容必须正确,概念清楚,符合逻辑;其中的文字、图、表、公式、符 号等都必须...

    人工智能的发展历程.doc

    后来他们的学生还做了许 多工作,如人的口语学习和记忆的EPAM模型(1959年)、早期自然语言理解程序SAD- SAM等。此外他们还对启发式求解方法进行了探讨。 1956年Samuel研究的具有自学习、自组织、自适应能力的西洋跳棋...

    大数据期末知识点总结.pdf

    Veracity(准确性):即处理的结果要保证⼀定的准确性。 Value(⼤价值):即⼤数据包含很多深度的价值,⼤数据分析挖掘和利⽤带来巨⼤的商业价值。 ⼤数据概念: ⼤数据概念: ⼤数据是指数据规模⼤,尤其指因为...

    本科毕业设计开题报告(学生电子作业提交与分析系统的设计与实现V2)

    准确理解一个系统的业务逻辑,合理规划设计,开发出适应其应用的应用系统。正确理解实际应用中的业务逻辑需求,解决系统之间模块的科学划分与结构组织,更好更快的开发设计系统。 此外,利用Microsoft SQL server...

    超爽的自学课件(java)

    首先是最初的方案,然后经历各种程序逻辑,将方案不断改革为更恰当的设计。通过整个过程的学习,大家可体会到使设计思想逐渐变得清晰起来的一种途径。 <br>(17) 第17章 项目 本章包括了一系列项目,它们要么以...

Global site tag (gtag.js) - Google Analytics