`
happmaoo
  • 浏览: 4543915 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

asp中利用xmlhttp实现远程管理数据库

阅读更多

A Review of Remote Database Administer
几年之前, CGI-BIN 模块被用作远程管理数据库。现在, CGI-BIN 用得越来越少了,原因是它运行速度很慢,而且难于维护。
近几年,组件对象模型 (COM) 得到了广泛的运用,不幸的是,在虚拟主机上注册 COM 组件是一件很麻烦的事。

在 .NET 或 J2EE 平台上, 我们可以很方便地开发n层结构的 Web 应用程序。但是对于网站来说,我们有更方便的方法远程管理数据库,例如:运用 XMLHTTP 和 ADO/ADOX.

RDBA 如何工作
RDBA's 的工作流如下:
1 客户端向服务器发出一个查询请求。
2 服务器接受并执行之,然后返回值到客户端。
3 客户端从服务器接受结果并显示之。
RDBA 依赖的两个技术:
1 客户端和服务器交互(发送命令,返回结果)的通道: XMLHTTP.
2 服务器上用于获取数据的中间层: ADO/ADOX.

RDBA's 工作流图如下:


RDBA's 工作流图

使用 XMLHTTP
XMLHTTP 用于通过 HTTP 请求来发送或接受 XML 信息。
实际上 XMLHTTP 还有其他的很多用途。
你可以用它来向服务器发送命令(可用 XML, string, stream, 或 unsigned array). 命令也可以作为 URL 的参数
还可以向客户端发送结果信息( XML, string, stream, 或 unsigned array)
更多信息请参考:

在客户端使用 XMLHTTP 很简单,只有 5 步:
1. 创建 XMLHTTP 对象。
2. 指定方法,URL,以及验证,对服务器打开 XMLHTTP。 打开方法可以是 "POST" 或 "GET"。
3. 向服务器发送 request 信息。
4. 等待,直到从服务器接受到结果。
5. 释放 XMLHTTP 对象。

XMLHTTP 方法:
Open bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword
bstrMethod: 用于打开连接的 HTTP 方法,如 GET 或 POST
bstrUrl: 请求的服务器上的 URL,如:http://Myserver/Mypath/Myfile.asp
varAsync: 逻辑型。表示是否同步调用。缺省为 true (调用立刻返回)。 但通常将它设为 false ,以便等待服务器的返回值。
bstrUser: 身份验证的用户名信息。
bstrPassword: 身份验证的密码信息。


Send varBody
varBody: 类型可以为:BSTR, SAFEARRAY of UI1 (unsigned bytes), XML DOM 对象的IDispatch接口, 或 IStream。

setRequestHeader bstrHeader, bstrValue
bstrHeader: 要设定的 HTTP 头的名字。
bstrValue: HTTP 头的值。
如果要 POST 数据,可以添加一个 HTTP 头,以便告诉接受方正在发送数据:
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

XMLHTTP 属性:
onreadystatechange: 指定 readyState 属性改变时调用的事件处理函数。
responseBody: 以无符号字节数组的形式 response
responseStream: 以 IStream 的形式 response
responseText: 以字符串的形式 response
responseXML: 以 XML 文档 response

下面是代码片断:


Function GetResult(urlStr)
Dim xmlHttp
Dim retStr

Set xmlHttp = CreateObject("Msxml2.XMLHTTP") '创建对象
On Error Resume Next '错误处理
xmlHttp.Open "POST", urlStr, False '用 "POST" 方法异步打开连接
'发送表单数据
xmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlHttp.Send '向服务器发送 HTTP 请求

If Err.Number = 0 Then '如果成功
retStr = xmlHttp.responseText '等待从服务器接受数据
Else
retStr = "地址未发现" '错误信息
End If
Set xmlHttp = nothing '释放对象
GetResult = retStr '返回 response 给调用者
End Function
GetResult() 函数的参数是要请求的 url, 你可以添加子参数,如:
urlStr = "server.asp?cmd=" & cmd & "&db=" & db & "table=" & table
cmd: 命令类型,如:query, modify, delete 等
db: 服务器上的数据库名
table: 表名

使用何种数据类型?
正如上面所说,通过 XMLHTTP 通道传送的数据可以有很多种类型。其中用的最多的是 XML DOM 和 STRING。
选用何种数据类型取决于程序的需要。

为了从服务器取得数据,客户端和服务器都使用 XML 数据是一个很好的方法。因为这样可以处理大量的数据,请求服务器添加/删除/修改/查询 记录,或在客户端排序/过滤数据。

本文的目的是为了在虚拟主机上远程管理数据库,所以这需要有如下两个功能:
1. 远程管理数据库:添加/删除/修改/查询 远程数据库/表/字段。
2. 远程管理数据库中的数据: 添加/删除/修改/查询 记录

所以这里我们使用 XMLHTTP 来发送/接受 字符串

这样做的好处很明显:可以无闪烁刷新页面

由于是采用字符串, 所以可以简单的使用 "Response.Write" 来返回结果。一旦服务器 response 完毕,客户端用 "xmlHttp.responseText" 方法来获取整个结果,并返回给调用者,用于刷新页面数据。

如果采用异步方式,则客户端按下按钮后,会有一定的延时,客户端必须等待返回数据。如果采用异步或使用 XML DOM 则可以避免这一点。


Using ADOX
ADO 不能用来远程管理数据库,我们可以使用 ADOX。

ADOX 是 ADO 的扩展, 它提供了更多的函数用于处理数据库。一旦通过身份认证,并且你的角色为数据库管理员,那么你可以通过 ADOX 作任何操作。

This sample requests:
生成动态的 select 菜单,显示指定路径下的数据库名。
生成动态的 select 菜单,显示上述菜单中选定的数据库中的表名。
根据选定的数据库和表,动态的列出字段名。

根据虚拟目录路径的改变和 select 的改变,即时的改变显示的内容而且无闪烁的刷新页面。

使用 Scripting.FileSystemObject 获得给定路径的数据库名。 使用 ADOX 获取表名和字段名。代码如下:

获取一个数据库中的表名:


Sub GetTables_Server(DBName)
Dim i
Dim catDB 'ADODB.Catalog 对象

Set catDB = Server.CreateObject("ADOX.Catalog") '创建 ADODB.Catalog 对象

On Error Resume Next '错误处理

catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath(DBName) '打开连接
'如果需要可加上用户名和密码
If Err.Number = 0 Then '成功
' 动态产生 select 选单
Response.Write "<select name='selTable' onChange=ShowResult('fields')>"
With catDB
For i = 0 To .Tables.Count -1
If .Tables(i).Type = "TABLE" then ' 如果是一个表
'将表名添加到 select
Response.Write "<option value=" & .Tables(i).Name & ">" &_
.Tables(i).Name &"</option>"
End If
Next
End With
Response.Write "</select>" ' select 输出完毕
Else
'错误信息
Response.Write "错误: 不能打开数据库 - " & DBName
End If
Set catDB = Nothing ' 释放 ADODB.catalog 对象
End Sub

获取表中的字段名:


Sub GetFields_Server(dbName, tableName)
Dim i, j
Dim catDB 'ADODB.Catalog 对象

Set catDB = Server.CreateObject("ADOX.Catalog") '创建 ADODB.catalog 对象

On Error Resume Next '错误处理

catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath(dbName) '打开连接
'如有必要在此添加用户名和密码

If Err.Number = 0 Then ' 成功
'找到匹配的表名
With catDB
For j = 0 To .Tables.Count -1
If (.Tables(j).Type = "TABLE") and (.Tables(j).Name = tableName) Then
Exit For
End If
Next
End With

'列出字段名
With catDB.Tables(j)
For i = 0 To .Columns.Count -1
'如果是主键,选中之
If .Columns(i).Properties("Autoincrement") = True Then
Response.Write "<input type='radio' name='field' value=" &_
.Columns(i).Name & " checked=true>" & .Columns(i).Name & ""
'显示字段名
Else
Response.Write "<input type='radio' name='field' value=" &_
.Columns(i).Name & ">" & .Columns(i).Name & ""
'显示字段名
End If
Next
End With
Else
'Error message
Response.Write "错误: 不能打开数据库 - " & dbName
End If
Set catDB = Nothing ' 释放 ADODB.catalog 对象
End Sub
注:本例中所有的表采用了自增字段作为主键。如果你的数据库中未采用自增字段作为主键或未指定主键,则需要重写上述代码。使用自增字段作为主键是一个很好的习惯。


Use the sample
A screenshot of GOIS RDBA is showed as Fig. 2.

A screenshot of GOIS RDBA is showed as Fig. 2.

System required:
To run this sample, the follows should be installed on your PC:
Windows 98/Me/XP/2000,MSXML 4.0,MS Access 2000,IE 5.5 or above.
Install and execute:
1. Download the sample ZIP file - supervisor.zip.
2. Unzip the file under a path in your IIS, for example: C:\Inetpub\wwwroot\supervisor。
3. Input "localhost/supervisor/supervisor.asp" in the url address on your IE, then GO.
4. By a little changing, such as change the path, authorize the user, you can upload this sample source to your virtual hosting to administer your own database.

There are several sample databases and two source files in the downloadable ZIP file.
The sample databases will automatically unzip to a "database" path under the working path, for example:
/superviosr/database。

两个源文件是:
服务器端: server.asp
客户端: supervisor.asp

下载文件地址:http://www.codeproject.com/useritems/goiscode/supervisor.zip

分享到:
评论

相关推荐

    ASP与相关数据库技术高级指南(DOC)

    **ASP与相关数据库技术高级指南*...总结来说,ASP结合数据库技术提供了强大的Web开发能力,从基础的数据库连接到复杂的事务处理,都可以在ASP环境中实现。理解并熟练掌握这些知识点,将有助于构建高效、安全的Web应用。

    基于网络环境的库存管理系统的asp毕业设计(源代码+论文).zip

    在基于ASP的库存管理系统中,开发者可以利用ASP的脚本语言(如VBScript或JScript)编写业务逻辑,与数据库进行交互,实现数据的增删改查操作。同时,ASP支持多种组件,如ADODB(ActiveX Data Objects)用于数据库...

    ASP动态网页生成静态Html

    ASP动态网页生成静态HTML是一种常见的优化...通过模板技术,可以实现高效且可维护的静态页面生成,而XMLHTTP则提供了一种获取远程HTML内容的手段,适用于更复杂的场景。理解这些技术对于构建高性能的ASP应用至关重要。

    asp网站远程监控(超级管理)系统

    7、本系统适用于任意大中小型ASP网站和ASP空间(默认支持XMLHTTP),不与网站其它程序相冲突,占用资源少,各项设置一目了然,有详细说明。8、本系统记录的数据准确、全面、真实、无遗漏,可下载本地保存,其界面清晰...

    ASP下实现自动采集程序及入库的代码

    在ASP中实现自动采集程序及入库的代码,主要是利用XMLHTTP组件来获取远程网页内容,然后解析并处理这些数据,最后将处理后的信息存储到数据库中。这种方式极大地提高了数据录入的效率,减少了人工操作的时间成本。 ...

    asp.net初级面试题2

    【ASP.NET初级面试题2】涉及的知识点涵盖了ASP.NET的基础概念、编程模型、数据库操作、XML处理、Web开发、网络通信、SOA平台和服务、协作和质量管理等方面。以下是这些知识点的详细说明: **基础概念与编程模型** 1...

    我要溜溜吧导购网asp top api 2.0 免费版

    5. 增加淘客推广频道,采用的是xmlhttp方式远程调用(相当于小偷方式),因此需要空间支持! 6. 完善栏目设置,注意栏目变动后及时更新缓存 7. 后台增加一键删除无推广链接的店铺数据功能。 8. 商品详情页进入淘宝...

    顺新站内搜索引擎

    在本项目中,XMLHTTP被用来从BAIDU服务器远程获取数据。通过发送HTTP请求,它可以实现在后台与服务器进行通信,而不会刷新整个页面,提高了用户体验。 2. 数据获取与处理:搜索引擎从BAIDU获取数据后,需要对这些...

    高级脚本“小马”的后门发现之旅

    - **特性**:该脚本不仅具备高度的隐蔽性,还巧妙地利用了SQL Server、Microsoft.XMLHTTP 和 404 错误页面伪装等技术手段来实现远程控制功能。 #### 三、核心功能解析 “小马”脚本的核心在于它能够通过一系列复杂...

    C#面试问题大全推荐看看

    - Property是C#中的一个特性,用于封装类的私有字段,提供访问控制,并可以添加getter和setter方法,实现数据验证等逻辑。Attribute则是一种元数据,它可以附加在程序元素上,如类、方法、属性等,为编译器或运行时...

    C#面试题目C#面试题目

    【C#面试题目详解】 1. **Web Service**:...以上是C#面试中可能出现的一些问题和知识点的详细解释,涵盖了语言特性、Web开发、数据库管理、设计原则等多个方面。面试者应全面准备,以展示扎实的技术基础和实践经验。

    C#面试常见问题.docx

    【C#面试常见问题解析】 1. **C#中 property 与 attribute的区别** ...以上是对C#面试中常见问题的详细解答,涵盖了语言特性、Web开发、数据库管理、设计模式等多个方面,有助于深入理解和准备C#相关的面试。

    夏茂政府网集成OA完整开源

    16.OA集成 Internet 邮件管理组件,提供 web 方式的远程邮件服务; 17.OA集成网络硬盘组件,提供便捷的局域网、广域网文件共享方案; 18.OA集成商业管理组件,轻松的管理客户、供应商资料和产品销售记录; 19.OA集成...

    最详细的SQL注入相关的命令整理(2)

    这部分代码片段展示了如何使用VBS脚本来创建XMLHTTP对象,通常用于发起网络请求或执行本地文件操作,是攻击者进行远程操作或自动化攻击流程的重要手段。 ### 总结 以上内容详细解读了与SQL注入相关的复杂命令,...

    夏茂政府网集成OA完整版 v2.0

    25.数据库路径文件为 HXINCLUDE/datapath.ASP。 本系统适合于省市县乡行政、事业、团体、学校、企业等单位型网站,本源码可免费转载、使用。logo、网站名等所有参数都在后台设置,无须更改任何代码即可使用。

    文章管理系统

    纠正后台皮肤管理 高级模式中 界面框架主体(960px)项没保存到数据库的bug 5.前台内容页关键词替换,加入排除已有超连接或图片标签的内容替换 2012年07月06日 V2.6升级包 ★更新方式:admin文件夹改成你后台目录...

    EJB3.0实例教程服务器为JBOSS

    - **定义**: 映射到数据库中的单一表。 - **示例**: ```java @Entity @Table(name = "USER") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name...

Global site tag (gtag.js) - Google Analytics