ADODB.Recordeset をXMLデータから生成する

シリアライズ

タイトルの処理は非常に簡単です。

ADODB.Recordset.Save "filename.xml", adPersistXML
ADODB.Recordset.Open "filename.xml"

これでレコードセットのXMLデータでのシリアライズ・デシリアライズはOK

それではシリアライズをどのように利用するかについてですが、

前の記事で書いたように、サーバからWebサービスとしてXMLデータを受信し、

クライアント側でデシリアライズしてレコードセットを生成し利用するということです。

(参考)COMを利用しJavaからADO接続してデータをXML出力

このことにより、クライアント側直接RDB(データベース)に接続する環境がなくても、

ADOのレコードセットの機能を使用して開発を行うことが可能です。

またクライアントもADOが利用できるツールであれば何でもOKなので、クライアント側

の選択肢も広がります(VBをはじめ、Excel等のVBA、Delphi、etc)

プログラミング

それでは、サーバにHTTPリクエストにてSQLを送信し、結果をXMLデータで受取り、

レコードセットに変換する処理を書いてみます(実際に動作させて検証OKのものです)

クライアントにはExcelを利用し、VBAでコードを記述しています。

Private Sub cmdRun_Click()
'XMLHTTPオブジェクトの生成
Dim oXmlHttp As Object
Set oXmlHttp = CreateObject("MSXML2.XMLHTTP")

'リクエストデータの準備
oXmlHttp.Open "POST", "http://tomcat:8080/app/xml.jsp", False
oXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

'パラメータを送信して実行
oXmlHttp.send UrlEncode("sql=" + Cells(1, 1).Value)

'結果確認
If (oXmlHttp.readyState = 4) And (oXmlHttp.Status = 200) Then
'成功
Dim RS As ADODB.Recordset
Call GetRecordset(RS, oXmlHttp.responseText)
Call Cells(2, 1).CopyFromRecordset(RS)
Else
'エラー
MsgBox "エラーです。HTTP Status Code : " & oXmlHttp.Status
End If
End Sub

'パラメータをUTF8でエンコードする
Public Function UrlEncode(ByVal sText As String) As String
If Len(sText) = 0 Then Exit Function
With CreateObject("ScriptControl")
.Language = "JScript"
UrlEncode = .CodeObject.encodeURI(sText)
End With
End Function

'XMLデータからレコードセット生成
Public Sub GetRecordset(RS As ADODB.Recordset, sXml As String)
Dim oStream As ADODB.Stream
Set oStream = New ADODB.Stream
oStream.Open
oStream.WriteText sXml
STR.Position = 0
Set RS = New ADODB.Recordset
RS.Open oStream
End Sub

配置したボタンをクリックすると、XmlHttpオブジェクトを使用し、サーバーへ
セル”A1″に書かれたSQL文をPOSTデータで送ります。
POSTデータはUTF8でエンコードします。
レスポンスで受け取ったXMLデータをADODB.Streamオブジェクトを利用し、
レコードセットを生成しています。
生成されたレコードセットのデータを、セル”A2″へコピーしています。
※POSTするSQL文はSELECT文のみ考慮しており、セキュリティ対策等は特に考慮

していないので実際に類似の運用を行う場合は十分考慮することが必要です。

※ADODB.StreamオブジェクトはADO2.5から追加されたオブジェクトなので、

ADOのライブラリのバージョンには注意が必要です。

以上、サンプルになりますが、

逆にクライアント側で更新したレコードセットをシリアライズし、サーバへポストして

更新系のアプリケーションも作成することも可能でしょう。

JANコード作成プログラム[.net]

ポケット図解 要求定義の基本とポイントがわかる本 (Shuwasystem Business Guide Book)

関連記事

  1. Microsft .NET C#

    System.IO.Path.GetTempFi…

    C#のプロジェクトで、一時的なファイル(Tempファイル)を作成するため…

  2. C# – TransactionSc…

    業務アプリケーションにデータベース処理はつきもので、さらにデータベー…

  3. twitterアプリケーション

    twitterと連携するアプリケーション作成のためのAPI群です。O…

  4. Struts2 をインストールする

    最初にまずStruts2をインストールする前提条件ですが、J…

  5. Struts2 の脆弱性を悪用した攻撃の急増

    Webアプリケーションフレームワークで有名になったなStrutsの後継、…

  6. JANコード作成プログラム[.net]

    JANコードJANコードとは、ご存じのとおり、日本で最も普及している…

  7. Struts2 RequestDispatche…

    getRequestDispatcher fowardStrutsを…

  8. Struts2 最初のアプリケーション

    Zero Configurationそれでは、Struts2での最初…

最近の記事

  1. Microsft .NET C#
  2. れいといちかとまほうのトンネル
PAGE TOP