说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

实现Access数据库的Web查询-VB资料

HTML文档下载 WORD文档下载 PDF文档下载
实现Access数据库的Web查询-VB资料

  ISAPI与DAO简介

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

  数据访问对象(DAO即Data Access Objects),原来是微软为Visual Basic和Access Basic设计的可编程接口。后来有了OLE Automation(自动控制)技术,它就可以用于C++编程了。

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

  * DAO OLE Automation接口;

  * dbDAO类;

  * MFC DAO类。

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

表1 宏变量名 FORM中对应数据域 类中的属性变量 解释
SZTXTDATABASENAME DATABASENAME m—szDatabaseName 数据库名
SZTXTTABLENAME TABLENAME m—szTableName 表名或查询名
SZTXTFIELDNAME FIELDNAME m—szFieldName 搜索字段名
SZTXTFIELDVALUE FIELDVALUE m—szFieldValue 字段值
  编程背景

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

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

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

  程序使用方法和功能介绍

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

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

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

  〈input type=″hidden″ name=″DATABASENAME″ value=″Northwind.mdb″〉

  〈input type=″hidden″ name=″TABLENAME″ value=″产品″〉

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

  〈p〉〈input type=″text″ name=″FIELDVALUE″ size=″30″〉〈/p〉

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

  〈/form〉

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

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

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

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

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

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

  select * from TABLENAME where FIELDNAME like ″*FIELDVALUE*″

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

  程序流程和主要函数说明

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

  (一)头文件MyTable.h

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

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

  class CMyTableExtension: public CHttpServer

  {

   public:

CString m—stReadError;

LPSTR m—szDatabaseName;

LPSTR m—szTableName;

LPSTR m—szFieldName;

LPSTR m—szFieldValue;

void cdbSetupPage(CString& stPage);

CHAR atoiHex(CHAR ch);

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

BOOL ParsetInput(LPSTR szInput,LPSTR szItem,LPSTR *pszData);

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

CString strVARIANT(const COleVariant& var);

CMyTableExtension();

~CMyTableExtension();

  //{{AFX—VIRTUAL(CMyTableExtension)

  public:

  virtual BOOL GetExtensionVersion(HSE—VERSION—INFO* pVer);

  virtual DWORD HttpExtensionProc(EXTENSION—CONTROL—BLOCK* PECB);

  //}}AFX—VIRTUAL

void Default(CHttpServerContext* pCtxt);

  DECLARE—PARSE—MAP()

  //{{AFX—MSG(CMyTableExtension)

  //}}AFX—MSG

  };

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

  (二)函数cdbSetupPage

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

  1.打开数据库OpenDatabase:

  CdbDBEngine dbeng;

  CdbDatabase db;

  db=dbeng.OpenDatabase(m_szDatabaseName);

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

  CdbRecordset rstMyTable;

  CString strQuery;

  strQuery.Format(″select * from %s where %s like \″*%s*\″″,

  m_szTableName,

  m_szFieldName,

  m_szFieldValue);

  rstMyTable=db.OpenRecordset(strQuery,dbOpenSnapshot);

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

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

  long i;

  CString stPage,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。

  后记

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


“大姨吗”CEO柴可:女性健康白皮书的发布与“大姨吗”的未来 看中国大学生的移动创意激情 第六届英特尔杯软件创新大赛侧记 在哪里工作更好?Facebook大胜Google WDC超链接图:涵盖35亿网页、1280亿超链接 英特尔:机器已扛不住亚洲的空气污染 IE11中全新增强的F12开发人员工具 TUP第31期报名已满 向主讲人《浪潮之巅》吴军提问征集 对话Spark核心作者Ion Stoica:我的编程之路从2KB内存开始 埃洛普出局?微软董事会称Mulally、Satya有望是下任CEO 百度开源平台上线,聚合百度开源项目 盘点TOP500:值得关注的超算,及当下趋势 【BDTC讲师】Tachyon作者:大数据存储以及处理框架经验分享 进一步称霸中国:低端设备让Android在中国每季获3%增长 低端设备撑起Windows Phone市场份额 研发周报:你的数据库准备好过冬了吗 JVM垃圾收集器使用调查:CMS最受欢迎 技术创业不能一味追求“骨感”,必要时丰富自己的5个途径 帷千动媒副总经理兰旭:整合现在,梳理未来! 11月份浏览器份额:IE继续上涨,Chrome仍不温不火 Windows 8令人担忧:8和8.1两版本份额目前仅有9.3% 一周消息树:微软还需更激进的手段——开放Windows Phone 【开源推荐】Genome.js:当DNA遇到开源 Go 1.2发布 着重语言特性的改进 微软资深IE专家邹颂兵:好产品才是竞争的关键 Web应用程序完全测试指南 Python正在取代R,成为数据科学界新宠 代号Threshold:微软将推Windows统一平台Threshold 日本任天堂掌机应用:《卢浮宫》革了谁的命? [TUP第31期]《浪潮之巅》吴军:硅谷3.0助力中国企业走向国际 SequoiaDB创始人:比MongoDB领先一到两年 打造企业级NoSQL数据库 [对话CTO]甲骨文熊光樑:全球研发模式开发出接地气产品 如何在网上建立一个论坛? 如何截取字串中的一部分?如:str="the price is 50¥",而我只想要其中的50,asp中是否有这种截取字串的函数??谢谢? 数据模块的疑问!在线等! 能否简化一下以下的代码 大家知道那里提供的asp虚拟主机被较好。要有ms sqlserver 支持,费用如何 有没有人能具体讲一讲关于大文本处理的过程! 一个小型局域网,通过防火墙上网,为什么有的机子可以上网,但网上邻居看不到呢? 显示器出现抖动~~~ 请教: 在Excel中如何查找数据? 女生向IT领域发展应往哪方面发展好? 各位老大过来看看,水晶报表问题 iframe 问题 有哈尔滨的程序员朋友吗?近来报个名就行 VS.NET 2003 正式简体中文版问题? PHP中有没有可以跨页面、跨session的变量? varbinary类型如何在datagrid中显示 几个简单的问题,在线等 配置SQL分布服务器时出错?急!在线等待! 有关CIH病毒 请教:如何使jpg图片放大后仍保持图像的清晰? 为我女友找工作, 地点:长沙。请大家帮忙,散尽所有分皆可:4860分。 谁知道installAnywhere的注册码?50分!!! [在线求助]:登陆的时候是用cookies来保存用户名和密码的,当用户没有正常退出,(比如说电脑断电了,直接关闭了ie等等)那应该怎么样清 关于按钮触发数据库操作 软件报价,用sql且windows界面的软件,大虾们估计多少money? 请问怎样在C#中调用VB.NET的类库? 在servlet里大量使用静态方法会不会有并发访问的问题 谁知道installAnywhere的注册码?100分!!! 谁有《visual C++网络高级编程》一书的配套光盘?邮电出版 开机时显示 NTLDR IS MISSING, 谁知道这是怎么回事? 急!应该用什么实现? CListCtrl如何让动态改变图标!GetItem()如何使用??,解决加分 怎样设置oracle的maximum number of processes 那个知道那里有DELPHI 7.0下啊,给分 delphi&spl GGJJ们谁有电子版《windows核心编程》的完整的第27章啊?偶的那一版这章只有半截 请教一个写入文本的问题,解决200分相送,在线等 如何做到高人一筹 有没有人能具体讲一讲关于大文本处理的过程! 函数返回值问题,给高分 DX抓图,如何保存为Bmp文件? 3个NF 嵌入文件夹窗格怎么使用 创业中的软件公司招人(有兴趣的弟兄进来看看) 数据库中事务的特点及其应用,急,不够再给分500,在线,急。 关于对话框.高分请教 创业中的软件公司招人(有兴趣的弟兄进来看看) 做的网站在IE5.0和IE6.0显示的问题 寻找采用WebSnap 技术的例子? matrxII观后感 关于JSP文件和BEAN的存放 太阳《I'll be there》的MV表达的是什么含义? 二维平面点和三维平面点谁的点多 若f(a+x)=-f(b-x),求函数关于哪点中心对称 在平面直角坐标系中 四边形CDHE的位置如图所示 求四边形CDHE的面积 一道算式,(-3)×2ab+5ab×6 丨OA丨=2,丨OB丨=2,向量OC=xOA+yOB且x+y=1,∠AOB是钝角,f(t)=丨OA-tOB丨的最小值为根号3,则丨OC丨的 体会四季之风的特点,用一句话写一写.1.春风:2.夏风:3.秋风:4.冬风: 请用算式解答,一个足球比一个篮球贵24元.已知一个篮球的价钱是足球的3分之2,足球和蓝球的单价分别是多少元? 已知以原点为圆心,1为半径的园上有两个动点AB满足│OA+OB│=│OA-OB│,向量a=(1-根号3)OA+OB.已知以原点为圆心,1为半径的园上有两个动点AB满足│OA+OB│=│OA-OB│,向量a=(1-根号3sinα)OA+OB,b=OA+ 中国 体育代表团在第十三届亚运动会中获得金牌129块,在第十四届亚运动会中获得金牌150块,增加了百分之几 3道相遇应用题的解答11.甲乙两站相距360千米.客车和货车同时从甲站出发驶向乙站,客车每小时行60千米,货车每小时行40千米,客车到达乙站后停留0.5小时,又以原速返回甲站,两车对面相遇的地 matlab编程中出现问题,说是矩阵维度不一致 ,M文件主函数如下:function f=myobj(x)arf=linspace(0.0001,0.5233,100);K=1162;M=600;L=1650;t=281-x(1).*cos(arf+1.134);h=sqrt(x(2).^2-(x(1).*sin(1.134+arf)-x(3)).^2);s=t-h;f=abs(acot(cot(ar 方程2012x=x/2013的解是急 妙语连珠是什么意思 根据意思,在括号里写出相应的成语1、慌慌张张,不知道怎么办才好.( )2、微小的很,不值得一提.指意义、价值等小得不值得一提.( )3、形容路弯弯曲曲或走弯弯曲曲的路.( )4、指聚集 什么蛇的生命力最强? 文中的哪些词语表现了赵尚志不怕牺牲的精神? 根据意思在括号里写出成语,再写出近义词,反义词.又冷又饿——成语() 近义词()不忍离去——成语() 反义词()急 哪一种文字是世界上生命力最强的?为什么? 你死我活是不是不怕牺牲的词语好心人看一看啊 根据意思在括号里写出成语,并在方括号里写出此典故的人物.常用来比喻有志气的人勤学本领.()【】比喻不留退路,非打胜仗不可,下决心不顾一切地干到底.()【】比喻讲话或写文章,在关 以"感谢长辈的话"为话题写一篇250字作文“感恩的心感谢有你,伴我一生让我有勇气做我自己……”这首感恩的心是我最爱听,也是体会颇深的歌。  爸爸妈妈在我生活上、学习上操了很 妙语连珠的妙是什么意思 质点做不改变方向的直线运动时位移和路程的大小完全相同 这句话错在哪里了呢 中国体育代表团在第十三届亚运会中获得金牌129块,在第十四届亚运会中获得金牌150 ’墙头草 物体做不改变运动方向的直线运动时 路程和位移相等 中国体育代表团在第13间亚运会中获得金牌129块,在第14间亚运会中获得金牌150块,增加了多? 将下列歇后语用线连起来.蓝天上的白云 自吹自擂 风吹墙头草 自由自在 孔明夸诸葛亮 两边倒 求级数和ln[n/(n+1)],n=1,2,3,... 中国代表团在第14届亚运会上获得金牌150枚,在第15届亚运会上获得的金牌数比第14届多十分之一.中国代表团第15届亚运会上获得金牌多少 几道数学题(我做了的,没保障,帮忙做一下!六年级的题!)一.判断1.半径是直线,直径是线段.( )2.两端都在圆上的线段是直径.( )3.所有圆的半径都相等,直径也都相等.( )4.在同一个圆中, 为什么质点做单方向直线运动的时候路程才和位移相等?为什么反方向不可以? 国体育代表团在第13间亚运会中获得金牌129块,在第14间亚运会中获得金牌150增加了百分之几 风吹墙头草-----哪边硬往哪边倒指什么生肖?什么生肖墙头草,什么动往硬的哪边倒 “水色.茶语 ”翻译成英文是什么?不要在线的,那样我也会. 连词成句谢谢 风吹墙头草是什么动物谢谢了, 求证xn=sqr(nn+aa)/n的极限为1 CNC坐标系 CNC做平面产品的,最简单的坐标系,我不懂坐标系, 炮竹声中一岁除,三阳开是泰,三心二意,风吹两边倒是什么生肖是什么动物 从七年级到八年级有关温庭筠的古诗 已知点A(a,-3),B(4,b),关于Y轴对称,则a+b=如上↑求详解,万分感激 判断无穷级数(-1)^n•2^n/3^n+1的敛散性n=1切趋向与无穷 从七年级到八年级有关范仲淹的古诗 测量平面坐标系是如何建立的? 若函数f(x)=a^2sin2x+(a-2)cos2x的图象若函数f(x)=(a^2)sin2x+(a-2)cos2x的图象关于X=-PAI/8对成,则a的值为? 从七年级到八年级有关李清照的古诗 石灰吟中表现不怕牺牲的句子 已知△ABC的三个顶点都在椭圆x^2/20+y^2/16=1上,A为椭圆短轴端点,AB⊥AC,AH⊥BC交BC于点H,求点H的轨迹方程. 甲袋有m个白球,n个黑球,乙袋有n个白球,m个黑球,从两袋各摸一个.计算:得到一个白球,一个黑球的概率 已知向量a≠e已知向量a不等于e,|e|=1,对任意t属于R,恒有|a-te|≥|a-e|,A.a垂直eB.a垂直(a-e)C.e垂直(a-e)D.(a+e)垂直(a-e) 私享旅程 尊耀全程 翻译英文 一只袋内装有m个白球,n-m个黑球急等 快啊 春风—— 夏风—— 秋风—— 东风——填空写出描写四季的风的词语 成语:()()趣味括号里填什么啊? 甲袋中有m个白球,n个黑球,乙袋中有n个白球,m个黑球,从两袋中各摸一个,的一白衣黑的概率 在平面坐标系中,已知A(2,-4),B(4,-3),C(5,0),求四边形AOBC的面积 黑球,白球共有30个,黑球个数是白球个数的两倍少6个,如果设白球X个,列方程是( )先在用 matlab内部矩阵维度必须一致θ= 0:0.1:0.5*pi;φ= 0:0.1:0.5*pi;plot (θ,sin(θ)-cos(θ)*tan(φ))想要得到这个函数的图像,其中θ是变量(0,π/2),φ是定值(0,π/2),应该怎么写啊?求诸神... 俄日会不会结盟 联手遏制中国?刘翔身穿红军服参加备战里约奥运会动员郑州皇家一号涉黄被查 号称“中原第一遇火灾女孩撬门救人 反被死死拽住拖进湖南三姐弟上学途中遇害 学校:校车司尼日利亚教堂发生踩踏事件 造成至少2美研发新型间谍机 可一小时内到达全球法国两名记者在马里被害 法士兵运送遗穆尔西庭审前夕 埃及发生枪击案致2名华尔街日报竟称钓鱼岛属日本,中国会因奥运冠军孙杨发生交通事故 疑无证驾驶美研发新型间谍机 可一小时内到达全球穆尔西庭审前夕 埃及发生枪击案致2名伊朗最高领袖称美国是微笑的敌人 对核震惊! 镜头揭秘世界各地女人的惊天差叙利亚等国民众观测日偏食天文奇观【高曼德拉生平电影首映 前妻称反映其“苦印度女婴家传怪病 身体多毛酷似狼孩【尼日利亚教堂发生踩踏事件 造成至少2宁波高校增设班级心理委员 为同学送上男童假装落水致救人者瘫痪 愧疚28年国安人心齐 能把“泰山”移露天小吃摊挡道还脏乱土耳其新政府赢得议会信任投票“加班为荣”的上班文化弊端明显“国之大事,在祀与戎”特12内外环公交车如何换乘奥运落选赛 中国男排获首胜前所未见的“毕加索”京城开展世界最长铁路隧道6月开通新三板企业分层办法出炉京津冀发展中几个值得关注的趋势李幼斌《邮差》首演军统高官伊朗新一届议会选出临时议长黑一日游网咋成了打不死的“小强”不良资产证券化时隔8年重启美日也起历史纷争?19座下凹式立交桥配挡水板NBA西部决赛被拖入“抢七”深圳社科普及周昨开幕郑赛赛/徐一璠进法网女双8强楼道杂物堵疏散通道将被罚
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘