VC++存储过程应用技巧

  很多朋友告诉我他数据库学得很好,对数据库的各类操作都相当熟练,没有难不到他们的SQL语句。然而他们写出的语句效率却并不是让人满意,一个读写就已经如此,要是成千上万频繁的数据库更新的话那个队列可能都要排到火星上去了。再者提到存储过程也是没人去做详细的了解,就更不提应用了。

  存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

  平常对于一条SQL语句需要先编译然后再执行,然后才能返回用户所需要的结果,但如果对于相同的SQL语句进行频繁多次的使用的话,每一次都重新编译然后执行,效率显然是大打折扣的。而正如百科里存储过程的介绍所说,能够将编译好的SQL语句存储在数据库中,之后每次调用便略过了编译这个步骤,只需要向存储过程传递参数(输入或输出)就能够得到用户需要的数据结果。当然,这对小量的数据库读写感觉不出来,但如果是大量的数据库操作,存储过程的优势就能够相当明显的体现出来。

  接下来我主要讲的是利用Visual C++对存储过程的调用。

Read more…

EASY TALK 开发日志 (二)

EASY TALK 开发日志 (二)

Easy Talk 2009

  经过了几天挣扎,EASY TALK算是有了突破性的进步。服务端方面目前用户线程80%接口函数都写得差不多了,所以后期的服务器工作量会减少许多,因为只需对用户请求进行函数响应返回,基本上就是一些函数的重新组成了。而客户端方面,也就是Rock所负责的70%的框架也已经成形了,函数也是相当得多,最后还是要封装动态链接库的,那样减少主程序的代码量。

  客户端与服务器端连接正常,多客户之间消息发送经由服务器转发,一方面减少客户端与服务器端代码编写,简化工作,另一方面通过始终都连接的TCP,而不会发生使用UDP出现的丢包现象。再者,已经实现离线消息的数据库副本保存,当用户上线后将能收到所有离线未收到的消息。

  客户端开发过程中遇到一些棘手的问题,其中包括选择定时器的时候是否使用函数指针,如何向定时器传参数,树控件各结点与好友信息链表的获取与匹配,判断聊天对话框与信息查看对话框创建状态从而选择是头像闪动还是消息直接转移对应对话框的控件,以及各非模态窗口的消息投递。前面几个问题最后决定在好友链表的结构体里分别添加成员变量,分别用以保存定时器事件ID,孩子结点的HTERRITEM句柄,对话框的窗口句柄。一方面可以简化很多操作,一方面给以后的功能扩展铺好基石。

Read more…

EASY TALK 开发日志 (一)

EASY TALK 开发日志

EASY TALK

  “EASY TALK 2009”其实是一款类似腾讯QQ,IM,以及MSN的即时通讯软件,它基于C/S的构架模型,开发语言为C++,平台用的是Microsoft Visual Studio C++。

  “EASY TALK”开发组员共有三位,其中ROCK,也就是在下,主要负责软件构架,数据结构以及客户端程序编写;ICEHIKER(小名老猴,常年额头不长毛)负责网络通讯模块的分析与服务器端程序编写;最后还有CBOY,负责数据库构架以及服务器端与客户端部分子模块的编写。有人会说到美工方面,很遗憾,ICEHIKER与CBOY的美工水平实在欠缺,这一重担又落到ROCK的肩膀上,总的来说,IDS(我们三人的组织名称)设计项目不少,如此大学最后一个设计,决定做出最高的质量,最好的效果。

Read more…

SEO Powered by Platinum SEO from Techblissonline