正文

嵌入式 SQL C语言编程2007-03-20 21:58:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lingdlz/24152.html

分享到:

上学期我们学了数据库,课程设计我是用ESQL/C写的,因为当时只学了C语言
其它的语言都没入门,所以只好用C写了,我写的是模拟QQ管理好友的程序由
于那时候刚好要期末考试,没时间有很多功能就没写了,现在要学C++/STL/MFC
又要软考,四级还得过,没时间做了,放到网上大家如果谁想了解这方面的有关
知识可以下载,那时我也是摸黑搞的,网上这方面的资料很少,我就靠SQL2000的手册。屋漏偏逢连夜雨,手册上全是英文,傻了我半天,幸好有金山词霸。有时候一个小错误我得发几个小时去摸索,现在可能也不大记得了,功夫不负有心了,最后终于出了个半成品,呵呵 …… 因为文件大了我只好分开了几个压缩文件。
我开了个Q群(28011342)大家可以去下载完整的资料 (数据库课程设计.rar)

环境架设下载      源代码下载       设计文档下载

部分代码:

///////////////////////////////////////////////////////////////////////////////
//
//  文 件: esql.sqc
//  嵌入式 SQL/C 程序 ,QQ 模拟器,数据库操作源码文件
//
//  函  数: main(),CheckMessage(),DatabaseError()
// 
// The SQLERRD3 array indicates the number of rows affected
//  作  者: Deng Lanzhong
//  联  系:Email: lingdlz@163.com  QQ: 403324669  
//  时  间: 2006--12--30
//
///////////////////////////////////////////////////////////////////////////////

#define  DBNTWIN32
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <ctype.h>
#include <direct.h>
#include <io.h>

// 文件包含,和一般的程序有点区别,我调试很久才解决

#include "qq.h"
#include "login.c"
#include "log.c"
#include "download.c"
#include "command.c"
#include "superm.c"
#include "listdata.c"
#include "use.c"
#include "friend.c"
#include "group.c"

/*
**     函  数:DatabaseError()
**       数据库操作出错时,调用该函数打印出错信息  
**     参  数:(无)
**     返回值:(无)
 */
void  DatabaseError(void){
 char msg[150];

 printf("数据库操作出错:\n");
     printf(" SQL错误代号: %li\n", SQLCODE);
     printf(" SQL错误信息: %Fs\n", SQLERRMC);
 sprintf(msg,"数据库操作出错: %Fs",SQLERRMC);
 if(SQLCODE < 0)    // 所有的数据库错误写入日志
  WriteLog(msg);    
}

void CheckMessage(void){
}

/*
**     函  数:main()
**       QQ 模拟器,数据库操作程序 的主函数,调用其它各模块
**     参  数:(无)
**     返回值:(无)
**
 */
int main (void){
 char  command[CMDLENGTH];  // 存储命令
 struct strcmd  cmdMeter[NUMBCMD+2]; // 命令表
 int  flag;

 EXEC SQL SET OPTION LOGINTIME 10; // 连接数据库的超时时间设置
     EXEC SQL SET OPTION QUERYTIME 100; // 查询超时时间
 atexit(DisConnect);   
 printf("-------------------------------------------------------\n");
 printf("    欢迎使用嵌入式 SQL/C 程序   QQ 模拟器 个人版\n\n");
 printf("    作  者: Deng Lanzhong \n");
 printf("    联  系:Email: lingdlz@163.com  QQ: 403324669\n");  
 printf("    时  间: 2006--12--30\n");
 printf("-------------------------------------------------------\n");
 if(InitCmdMeter(cmdMeter)==FAILED){  // 初始化命令表
  printf("%s\n","初始化命令表失败,请修复文件command.ini !");
  return FAILED;
 }
 // 以命令方式操作程序,循环调用各模块
 while(TRUE){
  printf("Input command >");
  while(!kbhit() && iRunLevel == NOTLINK)
   ;   // 未连接数据库,空循环,等待命令 
     while(!kbhit() && iRunLevel != NOTLINK)
   CheckMessage();  // 有用户登陆,查看数据库上的消息
  if(TabGetsCmd(command,cmdMeter)==FAILED)
   continue;  // 实现 " 三键 " 输入一个命令  
  
  if(iRunLevel >= NOTLINK){ // NOTLINK 级别能够运行的命令
   if(!stricmp(command,"help"))
    flag = cmdHelp();   
   else if(!stricmp(command,"link"))
    flag = ConnectToDb();
   else if(!stricmp(command,"exit")){
    if(TestExit() == FAILED)
     return SUCCESS;
    else
     flag = SUCCESS;
        }
   else if(!stricmp(command,"view run level"))
    flag = cmdShowRunLevel();
   else if(!stricmp(command,"view command"))
    flag = cmdViewCmdMeter(cmdMeter);
   else if(!stricmp(command,"go dos"))
    flag = cmdDosCmd();
   else if(!stricmp(command,"how can I do"))
    flag = cmdShowCanDo(cmdMeter);
  }

  if(iRunLevel >= LINK){  // 至少 LINK 级别的才能运行的命令 
   if(!stricmp(command,"login"))
    flag = Login(); 
   else if(!stricmp(command,"view qq source"))
    flag = ViewQqSource();
   else if(!stricmp(command,"view group source"))
    flag = ViewGroupSource();
   else if(!stricmp(command,"apply qq number"))
    flag = ApplyQqNumber();
  }

  if(iRunLevel >= USE){  // 至少 USE 级别才能运行的命令
   if(!stricmp(command,"view my info"))
    flag = ViewMemberInfo(iCurrentUser);
   else if(!stricmp(command,"update my info"))
    flag = UpdateMemberInfo(iCurrentUser);
   else if(!stricmp(command,"view my friend info"))
    flag = ViewMyFrdInfo();
   else if(!stricmp(command,"add friend"))
    flag = AddMyFriend();
   else if(!stricmp(command,"delete friend"))
    flag = DeleteMyFriend();
   else if(!stricmp(command,"move friend"))
    flag = MoveMyFriend();
   else if(!stricmp(command,"change friend remark name"))
    flag = ChangeMyFrdNick();
   else if(!stricmp(command,"add my friend group"))
    flag = AddMyFrdGrp();
   else if(!stricmp(command,"delete my friend group"))
    flag = DeleteMyFrdGrp();
   else if(!stricmp(command,"update my friend group name"))
    flag = ChangeMyFrdGrpName();
   else if(!stricmp(command,"view my friend group"))
    flag = ListMyFrdGrp(); 
   else if(!stricmp(command,"create qq group"))
    flag = CreateQqGroup(); 
   else if(!stricmp(command,"viem my join group info"))
    flag = ListMyJoinGrp(); 
   
  }

  if(iRunLevel >= MANAGE){ // 至少 MANAGE 级别才能运行的命令
   if(!stricmp(command,"view all member info"))
    flag = ListMemberBriefInfo();
  }

  if(iRunLevel >= SUPERMANAGE){ // 最高级别,一切命令皆可
   if(!stricmp(command,"turn off log"))
    flag = TurnOffLog();
   else if(!stricmp(command,"add qq number"))
    flag = AddQqNumber();
   else if(!stricmp(command,"add group number"))
    flag = AddGroupNumber();
   else if(!stricmp(command,"create random data"))
    flag = CreateRandomData();
   else if(!stricmp(command,"view table"))
    flag = ViewTable();
   else if(!stricmp(command,"empty table"))
    flag = EmptyTable();
  }

  if(flag == SUCCESS)
   printf("命令成功执行!\n");
  else
   printf("命令执行失败, 请参考 help 命令 !\n");
 }
 return SUCCESS;
}

阅读(7804) | 评论(2)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册