实现Access数据库的Web查询

[复制链接]
查看: 42|回复: 4
  • 慵懒
    2018-4-28 09:37
  • 发表于 2018-4-2 10:29:34 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x

    ISAPI与DAO简介

      ISAPI(InternetServerApplicationPrgrammingInterface)是微软公司提供的,和其IIS紧密结合的API。用它可以编制Internet/Intranet的数据库、网络管理和BackOffice等应用。

      数据访问对象(DAO即DataAccessob jects),原来是微软为VisualBasic和AccessBasic设计的可编程接口。后来有了OLEAutomation(自动控制)技术,它就可以用于C++编程了。

      程序员可以用DAO的三种类型编制C++代码:

      *DAOOLEAutomation接口;

      *dbDAO类;

      *MFCDAO类。

      其中dbDAO类和VisualBasic的DAO类非常相似,易于使用,笔者就是用它来进行数据库编程。

      表1宏变量名FORM中对应数据域类中的属性变量解释

      SZTXTDATABASENAMEDATABASENAMEm—szDatabaseName数据库名

      SZTXTTABLENAme taBLENAMEm—szTableName表名或查询名

      SZTXTFIELDNAMEFIELDNAMEm—szFieldName搜索字段名

      SZTXTFIELDVALUEFIELDVALUEm—szFieldValue字段值

      编程背景

      现在有不少中小企业或部门的数据库都基于Access,且其一般用Client/Server模式组建MIS。在当今流行Internet/Intranet且必将成为今后主流的形势下,有必要把原先的数据库搬上Internet/Intranet。

      不少人正使用ASP、IDC、vb sc ript、ja vasc ript、Perl甚至Shellsc ript来编制Web应用程序,虽然它们比ISAPI编制起来较容易,但其安全性较差,而且不如用C、C++等灵活强大,所以,作为一名较专业的程序员,选择用C++等高级语言来编制Web应用是更明智的选择。

      Microsoft公司的系统和开发软件正处于流行的时候,基于上述因素,笔者用VisualC++(4.2以上)提供的ISAPI和DAO开发工具,设计了Access数据库的通用Internet/Intranet查询程序,可运行于IIS2.0、PeerWebServer和PersonalWebServer等Web服务器。

      程序使用方法和功能介绍

      程序编译连接后,生成search.dll,置于Web服务器的可执行目录中(如/cgi-bin)。

      Web主页制作人员可以把以下HTML片断插入页面:

      〈formaction=″/cgi-bin/search.dll″method=″GET″〉

      〈in puttype=″hidden″name=″DATABASENAME″value=″Northwind.mdb″〉

      〈in puttype=″hidden″name=″TABLENAME″value=″产品″〉

      〈in puttype=″hidden″name=″FIELDNAME″value=″产品名称″〉

      〈p〉〈in puttype=″text″name=″FIELDVALUE″size=″30″〉〈/p〉

      〈p〉〈in puttype=″submit″value=″按此查询″〉〈/p〉

      〈/form〉

      以上三个“hidden”类型的输入数据由主页制作人员输入,在浏览器中不显示出来,以求界面美观,FIELDVALUE则由客户由浏览器填入数据。四个数据域分别解释如下:

      *DATABASENAME:Access数据库名,缺省在%system%system32目录,如输入全路径名,则用C语言格式,如:c:datamydata.mdb。

      *TABLENAME:表名或查询名,可以自定义一个符合输出的查询。

      *FIELDNAME:要以之为查询条件的字段名,为文本型。

      *FIELDVALUE:字段值,由客户输入。

      客户在浏览器中输入数据后,按下查询按钮,则由服务器输出以下查询结果:

      select*fromTABLENAMEwhereFIELDNAMElike″*FIELDVALUE*″

      因为*为Access查询语句的通配符,所以本程序能实现基于字段FIELDNAME的模糊查询。

      程序流程和主要函数说明

      图1本程序对一个客户请求的处理流程

      (一)头文件MyTable.h

      1.定义了4个宏变量分别和FORM中的四个输入数据域对应,用于解析参数以取得值,如表1所示。(下转B7版)

      2.定义了CHttpServer类的派生类CMyTableExtension:

      classCMyTableExtension:publicCHttpServer

      {

      public:

      CStringm—stReadError;

      LPSTRm—szDatabaseName;

      LPSTRm—szTableName;

      LPSTRm—szFieldName;

      LPSTRm—szFieldValue;

      voidcdbSetupPage(CString&stPage);

      CHARatoiHex(CHARch);

      //Parsein put函数解析客户输入数据

      BOOLParsetin put(LPSTRszin put,LPSTRszItem,LPSTR*pszData);

      //strVARIANT函数把变体变量值转换成一般数据类型值

      CStringstrVARIANT(constCOleVariant&var);

      CMyTableExtension();

      ~CMyTableExtension();

      //{{AFX—VIRTUAL(CMyTableExtension)

      public:

      virtualBOOLGetExtensionVersion(HSE—VERSION—INFO*pVer);

      virtualDWORDHttpExtensionProc(EXTENSION—CONTROL—BLOCK*PECB);


    发表于 2018-4-27 11:30:33 | 显示全部楼层
    我只是路过打酱油的
    回复

    使用道具 举报

    发表于 2018-4-29 07:17:34 | 显示全部楼层
    回的人少,我来小顶一下
    回复

    使用道具 举报

    发表于 2018-5-12 13:43:39 | 显示全部楼层
    额,看不懂在说神马~@_@
    回复

    使用道具 举报

    发表于 2018-7-18 11:33:42 | 显示全部楼层
    确实是难得好帖啊,顶先
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

     
     
    技术支持
    在线客服
    售后交流群瑞恩社区™售后</font><br><span>交流
    工作时间:
    8:00-18:00
    客服热线:
    15368564009
    微信扫一扫
    返回顶部 关注微信 下载APP 返回列表