做学生信息录入删除查询修改系统的心得

来源:互联网 发布:吉林建筑大学网络接入 编辑:程序博客网 时间:2024/04/27 14:02

做这个系统前期最纠结的就是怎么和数据库建立连接,安装sql server2005也耗费了很多的时间,结果到最后装的是精简版本的,以至于到后来连接数据库怎么也连接不上,这里还是推荐用开发版的sql server 2005,安装的过程如果有什么不明白的去百度搜索视频,安装完sql 2005以后就开始看关于sql 2005的书目,代码的东西当然略去不看,只需要学会,如何附加数据库,如何的备份导出数据库,以及数据库的设置等等一些就够了,在这中间浪费了一大部分的时间。设置好了,就要开始编程了,我还是比较懒的,有现成的程序,先仔细的研究,然后做了适当的修改,因为我只用到其中的一个模块。

列举一下遇到的问题,以及解决:

1.       跟一个对话框控件相关联,vc++是不支持一个对话框对应多个类的,最开始就是犯得这个错误,新建一个对话框,然后指定它对应的类,新建工程时候系统自动创建的对话框A做欢迎界面,新建的对话框做学生信息的界面。

2.       然新建了一个对话框B,那么我们肯定要从A当中弹出B才能达到我们需要的目的,在A的资源视图中新建Menu类,然后在ADlg的初始化函数中增加显示的学生信息菜单的代码。

CMenu menu;

menu.LoadMenu(IDR_MENU1);

                                                        SetMenu(&menu);

在新建的Menu图标上双击,然后在函数中添加

CB dlgMenu;  dlgMenu.DoModal(); //我最开始用的是CDlg dlg dlg.DoMal();结果出来的是一个我们建立的B的框架,所有按键均不管用

然后就可以实现由A菜单弹出B窗口

3.       B中初始化COM接口,建立连接。初始化,以及建立连接用的是以下代码,最初的时候试了很多版本,因为是sql的问题,统统没连接上,这里的字符串生成可以用vb,也可以用新建.udl文件双击设置的方法

CoInitialize(NULL);

// TODO: Add extra initialization here

m_pConnection.CreateInstance(__uuidof(Connection));

try                

{       

m_pConnection->Open("Provider=SQLOLEDB.1;Password=123;Persist Security Info=True;User ID=sa;Initial Catalog=SSS;Data Source=WANGLING-PC","","",adModeUnknown);

}

catch(_com_error e)

{

           AfxMessageBox("数据库连接失败!");

           CoUninitialize();

                   }                                                       try  catch是在编程中一直要用到的

4.    开表:打开表的时候费了很大劲儿:最初让同学帮忙改,他用的是               CString strSql="select * from student";

m_pRecordset=m_pConnection->Execute(_bstr_t(strSql),NULL,adCmdText);

这种方法,但是问题是大大的,因为我们要用的MoveLast等函数,结果一遇到这些函数就是大大的 run time error,实在纠结啊,这里这种方法,结果去csdn中搜索一下,找到了原因:

 

 

 

CursorType   属性
           

指示在   Recordset   对象中使用的游标类型。


设置和返回值


设置或返回以下某个   CursorTypeEnum   值。


常量   说明
 
AdOpenForwardOnly  
仅向前游标,默认值。除了只能在记录中向前滚动外,与静态游标相同。当只需要在记录集中单向移动时,使用它可提高性能。
 
AdOpenKeyset  
键集游标。尽管从您的记录集不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,键集游标与动态游标相似。仍然可以看见其他用户更改的数据。
 
AdOpenDynamic  
动态游标。可以看见其他用户所作的添加、更改和删除。允许在记录集中进行所有类型的移动,但不包括提供者不支持的书签操作。
 
AdOpenStatic  
静态游标。可以用来查找数据或生成报告的记录集合的静态副本。另外,对其他用户所作的添加、更改或删除不可见。  

 

 

我们没有设置游标类型,以至于n多的bug出现,于是进行了修改:

                   m_pRecordset->Open("SELECT * FROM student",

//theApp.m_pConnection.GetInterfacePtr(),//A类建立的连接用

_variant_t((IDispatch*)m_pConnection,true),//B类建立的连接用

adOpenDynamic,adLockOptimistic,adCmdText);

大功搞成

原创粉丝点击