登录注册
上海交通大学论坛 > 数据库 > 浏览当前帖子 手机版 关闭左侧栏
转载[从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
表情
所有内容均为会员自愿发表,并不代表本站立场.
论坛帮助 会员认证删帖申请 联系我们