• 这几天写MFC时候碰到的一些问题!


         按照老师的要求,期末必须交一次大作业!这次C++的大作业,其实也就是课程设计是用C++ MFC写一个学籍管理系统。虽然听人家说C++ MFC已经被淘汰了,但是按照要求还是得去写呗,况且都是面向对象的语言可能对我的java学习也会有点帮助的!但是还是不的不吐槽下VC++ 6.0这款编译器!是在是太糟糕了,出错了什么都不提示,就一个错误框给你,所以你不得不去调试看下再哪步出错,然后在这步去找哪里错了!况且我对debug用的也不怎么熟悉所以只能用注释和MessageBox来调试了!而且有的时候会莫名的出现错误,过会又好了,类名什么的在类视图中有的时候又找不到等等的一些问题,真是太浪费时间了。很不好,中间也有尝试去用VS2010,但是确实很卡,后来也就放弃了!但是呢在写代码的过程中还是有一点收获的!下面就把这些收获记录下来,供以后学习参考!

        1.出现语法错误

       我在一个类中定义了一个方法

    int ADO:: GetRecordCount(){
         int nCount = 0;
         try{
    	      m_pRecordset->MoveFirst();
    	 }
         catch(_com_error e){
    		 AfxMessageBox(e.Description());
             return 0;
    	 }
    	 while(!(m_pRecordset->adoEOF)){
    	 m_pRecordset->MoveNext();
    	 nCount = nCount+1;
    	 }
    	 m_pRecordset->MoveFirst();
    	 return nCount;
    
    
    }
    

      然后在其他类中调用这个方法循环输出结果集的数据

    for(int k=0;k<ado.GetRecordCount();k++){
    		    value = ado.m_pRecordset->GetCollect(_variant_t((long)0));
    			if(value != m_information)
    				count++;
    			else{
    				break;
    			}
              ado.m_pRecordset->MoveNext();
    }

      结果就出现输出的数据一直是结果集的第一行数据。后来才发现k<ado.GetRecordCount()里面的ado.GetRecordCount(),每次循环判断条件的时候都会运行,而子啊这个方法里面最后一句是m_pRecordset->MoveFirst();把结果集移到第一行!所以就会发生上面的情况!

         解决办法:

            1.在循环体外面定义一个int变量来接受行数,然后写进判断条件。

            2.直接用while(!(ado.m_pRecordset->adoEOF))也就是判断结果集是否到了最后来控制!

        2.语法错误

          If判断语句和循环语句的误用导致结果出错。比如说while(!(ado.m_pRecordset->adoEOF)),这里把while换成if就会导致方法体值运行一次!切记切记,不要粗心,主要还是自己开发的太少了,要多练多练!

          过程中暴露出来的问题

          1.对SQL语句还不是很了解,所以对一些表的处理,数据的筛选还不是很合理!在期间学会了group by和ORDER BY语句有的了运用但是对group by还不是很熟悉。这里可以参考http://www.w3school.com.cn/sql/sql_groupby.asphttp://www.w3school.com.cn/sql/sql_orderby.asp里面的信息!

          2.对数据库的处理很不理想!对表的参照完整性一点概念都没有!对事务处理什么的不了解!以后需要在这方面的了解!

          3.对面向对象语言的3大特性封装,继承,多态。在开发的时候没有很好的体现!所以在开发过程中会发现代码的重用性很高!需要加强!

          4.可能是自己的方法不对,在开发过程中会出现逻辑稍复杂的语句!(循环里面套循环),因为自己对算法这些的不是很了解,所以可能会觉得有点繁琐!有时间可以抽空看下算法!

         哎~~转眼到大四了,时间真的不够!以前实在是玩的太疯了!要努力要努力!

           

  • 相关阅读:
    后台取得非服务器控件的一种方法(Request.Form.GetKey(i))
    扩展jQuery键盘事件的几个基本方法(练习jQuery插件扩展)
    Javascript得到CheckBoxList的Value
    sql server的count(小技巧)
    oracle数据库约束条件删除、取消、启用
    iis7.0修改网站端口
    session模式和web园
    理解Session State模式+ASP.NET SESSION丢失FAQ (转)
    Gridview中生成的属性rules="all",在Firefox出现内线框解决办法
    一个类windows系统的效果图
  • 原文地址:https://www.cnblogs.com/iMouseWu/p/3175967.html
Copyright © 2020-2023  润新知