Database 版 (精华区)
发信人: joy ( 雨送黄昏花易落), 信区: Database
标 题: [从Web页面访问Internet数据库
发信站: 紫 丁 香 (Sat Aug 1 18:07:27 1998), 转信
发信人: lhh.bbs@argo.zsu.edu.cn (倚天), 信区: DATABASE
标 题: 转载[从Web页面访问Internet数据库 ]
发信站: Yat-sen Channel BBS (Sun Jul 19 11:22:10 1998)
转信站: DUT!ustcnews!news.zsu.edu.cn!argo
出 处: argo.zsu.edu.cn
当今计算机领域Internet的发展尤为迅猛。目前社会
上各行各业,都越来越向着Internet发展,因而Internet
上数据库的应用将会是主流。而用户与Internet进行信息
交流的主要工具是浏览器,如IE和Netscape。这里,笔者
以中文Windows NT 4.0 平台,Internet Information
Server 3.0 (IIS 3.0) Web 服务器为例介绍一种在Web页
上访问SQL Server 6.5数据库的方法。
一、 从Web页访问Internet数据库的原理:
之所以要称Internet数据库而不直接叫SQL Server,
是因为Internet上数据库不一定是SQL Server,还可以是
ORACLE、Sybase、Informix,乃至Foxpro,在Web页上访
问它们的原理基本一样,这里以SQL Server 6·5为例描
述。
从Web页访问Internet数据库的详细过程如下:
1、客户端用户在浏览器相应页面上向Web服务器
(IIS)发出请求,这里用户端的页面即可能是HTML文
件,也可能是直接用到.idc文件;
2、Web服务器(IIS)接收到客户端送过来的URL,从中
得到IDC文件名,并装载Httpodbc.dll文件,.idc文件名
被映射到Httpodbc.dll;
3、Httpodbc.dll读取IDC文件;
4、根据.idc文件中的ODBC数据源,Httpodbc.dll让
IDC连接至ODBC数据源,并执行.idc文件中的SQL语句(由
ODBC按顺序发送到SQL Server);
5、返回SQL语句结果给Httpodbc.dll,由IDC读
取.idc文件中指定的HTML扩展文件.htx,将得到的SQL结
果数据与.htx文件合并,形成HTML文档;
6、合并后形成的HTML文档被送回到Web服务器,由
Web服务器再返回给客户端,客户端的浏览器上便呈现出结
果。
二、实例说明:
① ODBC的设置
ODBC可支持和管理目前已有的几乎所有数据库的驱动
程序。通过ODBC,应用程序可对所有数据库进行访问。
这里,对Web服务器上的ODBC安装支持SQL Server的
驱动程序,操作方法为:事先安装好SQL Server 6.5;双
击控制面板的“ODBC”图标,选“系统DSN”页,添加SQL
Server驱动程序;在“Data Source Name”栏中填入数据
源名,填入SQL Server 6.5所在的服务器名;按“Option
”按钮,在“Database Name”栏中填入要访问的SQL
Server数据库;按“OK”按钮,可见到在“系统DSN”页
中已有刚才加的数据源MSSQL。
② 创建一个Web服务虚拟路径
缺省情况下,与用户交流的程序是放在Web服务器上
别名为/Scripts的虚拟目录下供客户端调用。而在实际应
用中,我们最好为不同的项目创建不同的虚拟目录,这需
要NT系统管理员权限,请NT系统管理员为你的项目创建一
个新的虚拟目录,这可在“Microsoft Internet Server
(公用)\Internet服务管理员”中完成。假设此目录为
/work,物理路径为D:\InetPub\work。
③ 查询实例
现设在SQL Server 6.5中已有一数据库YJS,此库中
有一表employee,其结构如下:
sn char( 4) ——序号
name char(16) ——姓名
birthday datatime ——出生时间
duty char(12) ——职务
salary int ——薪水
创建query1.idc(查询)文件,内容如下:
Datasource: MSSQL
Username: sa
Template: query1.htx
SQLStatement:
+SELECT
sn,name,convert(char(10),birthday,102) as birth,
+ duty,salary from employee
query1.htx内容如下:
〈HTML〉
〈HEAD〉〈TITLE〉职员情况〈/TITLE〉〈/HEAD〉
〈BODY 〉
〈font size=2〉
〈CENTER〉
〈P〉
〈TABLE BORDER〉
〈%begindetail%〉
〈%if CurrentRecord EQ 0 %〉
〈caption〉〈b〉职员情况一览表〈/b〉〈/caption
〉
〈p〉
〈TR〉
〈TH〉〈B〉序号〈/B〉〈/TH〉〈TH〉〈B〉姓名
〈/B〉〈/TH〉
〈TH〉〈B〉出生时间〈/B〉〈/TH〉〈TH〉〈B〉职
务〈/B〉〈/TH〉
〈TH〉〈B〉薪水〈/B〉〈/TH〉
〈/TR〉
〈%endif%〉
〈TR〉
〈TD〉〈%sn%〉〈/TD〉〈TD〉〈%name%〉〈/TD
〉
〈TD〉〈%birth%〉〈/TD〉〈TD〉〈%duty%〉
〈/TD〉
〈TD align="right"〉〈%salary%〉¥〈/TD〉
〈/TR〉
〈%enddetail%〉
〈P〉
〈/TABLE〉
〈/center〉
〈/BODY〉
〈/HTML〉
.htx文件实际上可称为HTML的扩展,与标准HTML文件
比起来,它包含控制输出HTML文档的一些关键字,如〈%
begindetail%〉、〈%enddetail%〉、〈%if%〉、
〈%else%〉、〈%endif%〉等,可产生出动态页面。
这里,可以在客户端直接调用query1.idc, query1.idc
中的SQL语句查询后得到的数据合并到query1.htx中形成
标准的HTML文档,由Web服务器IIS再传给客户端,客户端
的浏览器便得到查询结果。如图1所示。
④数据输入实例
现在我们尝试通过浏览器给表employee输入数据,这
需要一个HTML文件、一个.htx文件和一个.idc文件,分别
如下:
·input.htm文件内容:
〈html〉
〈head〉〈title〉雇员数据录入〈/title〉〈/head
〉
〈BODY 〉
〈TABLE〉
〈tr〉
〈TD〉〈/TD〉
〈TD〉
〈hr〉
〈h2〉请在此处输入您的数据〈/h2〉
〈p〉
〈font size=3〉
〈form action="/work/input.idc" method=get〉
〈pre〉
〈b〉序号:〈/b〉 〈input type="text"
name="sn0"
value="" size=4 maxlength=4〉
〈b〉姓名:〈/b〉 〈input type="text"
name="name0"
value="" size=16 maxlength=16〉
〈b〉出生时间::〈/b〉 〈input type="text"
name="birth0"
value="" size=12 maxlength=12〉
〈b〉职务:〈/b〉 〈input type="text"
name="duty0"
value="" size=12 maxlength=12〉
〈b〉薪水:〈/b〉 〈input type="text"
name="salary0"
value="" size=10 maxlength=10〉
〈input type="submit" value="提交"〉
〈input type="reset" value="重新填写"〉
〈/form〉
〈p〉
〈/font〉
〈/td〉
〈/tr〉
〈/table〉
〈/body〉
〈/html〉
在浏览器上调用结果如图2(填入数据)。
·input.idc文件内容:
Datasource: MSSQL
Username: sa
Template: input.htx
RequiredParameters:
sn0,name0,birth0,duty0,salary0
SQLStatement:
+ if exists (
+ select * from employee
+ where sn='%sn0%'
+ )
+ select result='duplicate'
+else
+ INSERT INTO employee
+ VALUES('%sn0%', '%name0%','%birth0%
','%duty0%',%salary0%);
RequiredParameters项是必须的参数名;
·input.htx文件内容:
〈html〉
〈title〉提交结果〈/title〉
〈BODY〉
〈TABLE〉
〈tr〉
〈TD〉〈/TD〉
〈TD〉
〈hr〉
〈h2〉提交结果〈/h2〉
〈hr〉
〈%begindetail%〉
〈%enddetail%〉
〈%if CurrentRecord EQ 0 %〉
〈h2〉〈I〉〈%idc.sn0%〉 〈%idc.name0%〉
〈/I〉 记录已经填入。〈/h2〉
〈%else%〉
〈h2〉相同序号的记录数据已经提交过,请用另外的
序号!
〈/h2〉
〈%endif%〉
〈hr〉
〈font size=2〉
〈a href="/input.htm"〉添加新记录〈/a〉
〈/font〉
〈/td〉
〈/tr〉
〈/table〉
〈/body〉
〈/html〉
数据提交成功后将看到如图3结果。
当序号重复后,将拒绝输入。这时再用前面的查询
query1.idc浏览employee表,将看到新加的记录。
--
※ 来源:.Yat-sen Channel argo.zsu.edu.cn.[FROM: 202.116.78.173]
[分类讨论区] [全部讨论区] [上一篇] [本讨论区] [回信] [下一篇]
--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.229.126]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.680毫秒