电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 网络安全-> 安全在线
实现access数据库的web查询_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
ISAPI与DAO简介

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

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

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

  *DAOOLEAutomation接口;

  *dbDAO类;

  *MFCDAO类。

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

表1宏变量名FORM中对应数据域类中的属性变量解释
SZTXTDATABASENAMEDATABASENAMEm—szDatabaseName数据库名
SZTXTTABLENAMETABLENAMEm—szTableName表名或查询名
SZTXTFIELDNAMEFIELDNAMEm—szFieldName搜索字段名
SZTXTFIELDVALUEFIELDVALUEm—szFieldValue字段值
  编程背景

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

  不少人正使用ASP、IDC、VBScript、JavaScript、Perl甚至ShellScript来编制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″〉

  〈inputtype=″hidden″name=″DATABASENAME″value=″Northwind.mdb″〉

  〈inputtype=″hidden″name=″TABLENAME″value=″产品″〉

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

  〈p〉〈inputtype=″text″name=″FIELDVALUE″size=″30″〉〈/p〉

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

  〈/form〉

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

  *DATABASENAME:Access数据库名,缺省在%system%\system32目录,如输入全路径名,则用C语言格式,如:c:\\data\\mydata.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);

  //ParseInput函数解析客户输入数据

BOOLParsetInput(LPSTRszInput,LPSTRszItem,LPSTR*pszData);

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

CStringstrVARIANT(constCOleVariant&var);

CMyTableExtension();

~CMyTableExtension();

  //{{AFX—VIRTUAL(CMyTableExtension)

  public:

  virtualBOOLGetExtensionVersion(HSE—VERSION—INFO*pVer);

  virtualDWORDHttpExtensionProc(EXTENSION—CONTROL—BLOCK*PECB);

  //}}AFX—VIRTUAL

voidDefault(CHttpServerContext*pCtxt);

  DECLARE—PARSE—MAP()

  //{{AFX—MSG(CMyTableExtension)

  //}}AFX—MSG

  };

  其中定义的数据库查询函数(cdbSetupPage)和重构的Http服务器扩展处理函数HttpExtensionProc为其中核心。以下重点讲述MyTable.cpp文件中的这两个函数。

  (二)函数cdbSetupPage

  根据四个属性变量(见表1)输出数据查询结果,存放于stPage并返回:

  1.打开数据库OpenDatabase:

  CdbDBEnginedbeng;

  CdbDatabasedb;

  db=dbeng.OpenDatabase(m_szDatabaseName);

  2.创建查询结果记录集:

  CdbRecordsetrstMyTable;

  CStringstrQuery;

  strQuery.Format(″select*from%swhere%slike\″*%s*\″″,

  m_szTableName,

  m_szFieldName,

  m_szFieldValue);

  rstMyTable=db.OpenRecordset(strQuery,dbOpenSnapshot);

  以上strQuery为查询语句,dbOpenSanpshot表示打开一快照类型的记录集。

  3.用记录集的Fields集合(Collection)的GetCount()和GetName()分别取得字段数和各字段值:

  longi;

  CStringstPage,stTemp;

  for(i=0;i〈rstMyTable.Fields.GetCount();i++){

  stTemp.Format(″〈TH〉%s〈/TH〉\n″,

rstMyTable.Fields[i].GetName());

stPage+=stTemp;}

  4.输出记录集中所有记录的值:

  for(i=0;i〈rstMyTable.Fields.GetCount();i++){

stTemp.Format(″〈TD〉%s〈/TD〉\n″,

strVARIANT(rstMyTable.Fields[i].GetValue));

  stPage+=stTemp;}

  (三)重构基类CHttpServer的成员函数HttpExtensionProc

  1.从EXTENSION_CONTROL_BLOCK*pECB取得查询字串,再由函数ParseInput解析此字符串,得出客户端的各数据域的输入值:数据库名,表名,字段名,字段值;

  2.由函数cdbSetupPage输出数据库查询结果字符串stPage;

  3.用EXTENSION—CONTROL—BLOCK对象的ServerSupportFunction方法向客户浏览器输出查询结果字符串stPage。

  后记

  由于用VisualC++(4.2以上)编制程序时,有很多环境设置,所以笔者把整个项目(包括源程序和面目设置等)和文档打了个包,需要的读者可以E-mail联系,地址:zhugeming@263.net。->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·web动画图像分解在vb动画设计中的应用_visualbasic教程
·保护sql server的十个步骤_数据库安全
·趣味撞球--vb5应用程序一例_visualbasic教程
·visualbasic使用技巧_visualbasic教程
·vb图片框在报表设计中屏幕滚动的问题_visualbasic教程
·用vb获取桌面图象_visualbasic教程
·vb编程经验点滴_visualbasic教程
·vb开发通讯软件_visualbasic教程
·用vb5.0从recordset中打印列表_visualbasic教程
·美出现在线密码管理网站服务 解决记忆困扰_互联网

最新文章
·网页恶意代码的防疫
·中国黑客超强X档案 第25章:一个少年黑客的独白
·中国黑客超强X档案 第24章:营造中国特色的黑客文化
·中国黑客超强X档案 第23章:黑客实战纪实
·中国黑客超强X档案 第22章:黑客近景写真
·中国黑客超强X档案 第21章:帽子的抉择
·中国黑客超强X档案 第20章:安全焦点
·中国黑客超强X档案 第19章:“流光异彩”话小榕
·中国黑客超强X档案 第18章:黑客的天堂
·中国黑客超强X档案 第17章:中国鹰派


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号