|
登录注册 |
☦ 上海交通大学论坛 > 数据库 > 浏览当前帖子 | 手机版 关闭左侧栏 |
转载[从Web页面访问Internet数据库 ] |
【返回本版】 【发表帖子】 【回复帖子】 | 浏览量 5637 回帖数 0 |
kaka122 等级 ☆ 楼主 发表于 2012/5/3 10:39:07 编 辑 |
||
当今计算机领域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(查询)文件,内容如下: DatasourceMSSQL Usernamesa Templatequery1.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文件内容: DatasourceMSSQL Usernamesa Templateinput.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表,将看到新加的记录。 |
1 |
论坛帮助 会员认证删帖申请 联系我们 |