在.NET平台中期望值最高,广告做的最多的要算是WebServices了。
WebServices是Web上的类,与Web应用程序不同的是,这个类不返回HTML页面,只以XML文档返回一个或几个值。因此,任何能够处理XML的应用程序都可以调用其方法和使用其结果。WebServices更多是Internet上的应用,给小型企业内部系统开发WebServices,或许你不屑一顾,但个人认为,与COM+和DCOM相比,从布置到维护,WebServices更胜一筹。同时,从COM数据据传输转换到XML大大提高了应用程序的伸缩性和相互操作性,对不同的需求,可以用不同的语言开发相应的应用程序,并共享数据。 本文不深入探讨WebServices和XML,只示例通过VB6.0调用VS2005编译的WebServices。 作为VB6.0的程序员和爱好者,数据库开发中的ADO 2.0是再熟悉不过的了。不过.NET平台对ADO的结构体系作了扩展,增加了组件,解决了其不足,优化了性能,也就是ADO.NET。与熟悉的ADO相比,已经有太多的不同。那么,如何在VB6.0中通过WebServices获取记录集呢?示例如下: '==================== WebServices的代码 ===================

'首先要在COM组件中添加ADO

Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Data
Imports System.Data.Odbc
Imports System.Configuration.ConfigurationManager
Imports System.Xml
Imports ADODB

 <WebService(Namespace :Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
 Public Class TESTClass TEST
Inherits System.Web.Services.WebService

'读取config中的连接字符串
 Public Function cnString()Function cnString() As String
Return ConnectionStrings("connToPgSql").ToString()
End Function

'ADO记录集转换为XML
<WebMethod()> _
 Public Function RecordsetToXmlTest()Function RecordsetToXmlTest(ByVal Uid As String) As XmlDataDocument

Dim sql As String = "select * from where uid='" & Uid & "'"
Dim cn As New Connection
Dim rs As New Recordset
Dim st As New Stream
Dim xd As New XmlDataDocument

cn.ConnectionString = cnString
cn.Open()

rs.Open(sql, cn, CursorTypeEnum.adOpenForwardOnly, LockTypeEnum.adLockReadOnly, 1)
rs.Save(st, PersistFormatEnum.adPersistXML)
st.Flush()
st.Position = 0
xd.LoadXml(st.ReadText(st.Size))

Return xd

st = Nothing
rs = Nothing
cn = Nothing
xd = Nothing

End Function

End Class


''======================== VB6.0 的代码 ======================

'引用 Microsoft AML, v6.0
'引用 Microsoft ActiveX Data objects 2.x Library

Dim oHTTP As XMLHTTP
Dim oXmlDoc As DOMDocument
Dim rs As ADODB.Recordset
Dim strURL As String, strRequest As String
strURL = "http://localhost/BWR/TEST.asmx/RecordsetToXmlTest"
strRequest = "Uid=admin"
Set oHTTP = New XMLHTTP
oHTTP.Open "POST", strURL, False
oHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oHTTP.send (strRequest)
Set oXmlDoc = New DOMDocument
oXmlDoc.Load oHTTP.responseXML
'oXmlDoc.Save (App.Path & " s.xml")
Set rs = New ADODB.Recordset
rs.Open oXmlDoc
While Not rs.EOF
Debug.Print rs("uid") & rs("username") & rs("pwd")
rs.MoveNext
Wend

Set XMLHTTP = Nohting
Set DOMDocument = Nothing
Set rs = Nothing
 其实WebServices通过紧密集成XML而提供相互操作性,从上面的代码中也可以看出,WebServices是以XML文档返回ADO记录集的。所以我们可以完全不用ADO2.0所熟悉的记录集,而是通过直接操作WebServices返回的XML文档,从而实现VB6.0与WebServices的完美结合。 未完,有空继续...... 本文来源:http://blog.csdn.net/vbman2003/archive/2007/08/30/1765393.aspx
|