实现Access数据库的Web查询_Access数据库教程-查字典教程网
实现Access数据库的Web查询
实现Access数据库的Web查询
发布时间:2015-10-28 来源:查字典编辑
摘要:ISAPI与DAO简介ISAPI(InternetServerApplicationPrgrammingInterface)是微软公司提供的...

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中对应数据域类中的属性变量解释

SZTXTDATABASENAMEDATABASENAMEmszDatabaseName数据库名

SZTXTTABLENAme taBLENAMEmszTableName表名或查询名

SZTXTFIELDNAMEFIELDNAMEmszFieldName搜索字段名

SZTXTFIELDVALUEFIELDVALUEmszFieldValue字段值

编程背景

现在有不少中小企业或部门的数据库都基于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.dllmethod=GET〉

〈in puttype=hiddenname=DATABASENAMEvalue=Northwind.mdb〉

〈in puttype=hiddenname=TABLENAMEvalue=产品〉

〈in puttype=hiddenname=FIELDNAMEvalue=产品名称〉

〈p〉〈in puttype=textname=FIELDVALUEsize=30〉〈/p〉

〈p〉〈in puttype=submitvalue=按此查询〉〈/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:

CStringmstReadError;

LPSTRmszDatabaseName;

LPSTRmszTableName;

LPSTRmszFieldName;

LPSTRmszFieldValue;

voidcdbSetupPage(CStringstPage);

CHARatoiHex(CHARch);

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

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

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

CStringstrVARIANT(constCOleVariant

CMyTableExtension();

~CMyTableExtension();

//{{AFXVIRTUAL(CMyTableExtension)

public:

virtualBOOLGetExtensionVersion(HSEVERSIONINFO*pVer);

virtualDWORDHttpExtensionProc(EXTENSIONCONTROLBLOCK*PECB);

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Access数据库学习
    热门Access数据库学习
    编程开发子分类