まとまりのないブログ

something which something is something

vb.net 交差運転日記

datasetの内容をxmlファイルに出力する

投稿日:

datasetの内容をxmlに出力するのにはたった一行、writexmlという関数を使うだけでできあがる模様。あいたたた。datagridにバインドされたデータを一生懸命xml化するためにコードを考えていたのが馬鹿らしくなった。datasetの内容をxmlに変換できるというのは知らないとわからないけれど、xmlデータをdatagridにバインドできるのを知ってたのに逆を想像できなかったのが鈍すぎる。

datasetをxmlファイルに出力するサンプルコード(スマートな方法)

    'datasetを作成するための素材
    Dim cn As New OleDb.OleDbConnection("データベース接続文字列")
    Dim da As OleDb.OleDbDataAdapter
    Dim ds As DataSet

    'datasetにsqlの結果のテーブルをセット
    ds = New DataSet("家計簿")
    da = New OleDb.OleDbDataAdapter("SELECT * FROM 収支", cn)
    da.Fill(ds, "家計簿")

    'datasetにセットされたテーブルをxmlファイル出力
    ds.WriteXml("./data/account.xml")

    'datasetの解放
    da.Dispose()
    ds.Dispose()

datasetをxmlファイルに出力するサンプルコード(悪い見本)

    'datasetを作成するための素材
    Dim cn As New OleDb.OleDbConnection("データベース接続文字列")
    Dim da As OleDb.OleDbDataAdapter
    Dim ds As DataSet

    ds = New DataSet("家計簿")
    da = New OleDb.OleDbDataAdapter(SELECT * FROM 収支, cn)
    da.Fill(ds, "家計簿")

    'xmlドキュメントの宣言
    Dim xmlDoc As New System.Xml.XmlDocument

    'XML宣言
    Dim xmlDecl As System.Xml.XmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", Nothing)

    '宣言を子要素として追加
    xmlDoc.AppendChild(xmlDecl)

    'ルート要素の作成
    Dim rootEle As System.Xml.XmlElement = xmlDoc.CreateElement("家計簿データ")

    'データグリッドのレコード件数をセット
    Dim records As Integer
    Dim i As Integer
    records = ds.Tables(0).Rows.Count
    i = ds.Tables(0).Rows.Count

    '家計簿のレコードの各要素の宣言
    Dim recordElements(i) As XmlElement
    Dim idEle(i) As XmlElement
    Dim dateEle(i) As XmlElement
    Dim catEle(i) As XmlElement
    Dim detEle(i) As XmlElement
    Dim accEle(i) As XmlElement
    Dim moneyEle(i) As XmlElement
    Dim comEle(i) As XmlElement

    'datasetのテーブルからレコードの各値を取り出してノードを作成。レコード件数分ループ。
    For i = 0 To (records - 1)

        recordElements(i) = xmlDoc.CreateElement("レコード")

        dateEle(i) = xmlDoc.CreateElement("入力日")
        dateEle(i).InnerText = ds.Tables(0).Rows(i).Item(0).ToString

        catEle(i) = xmlDoc.CreateElement("費目")
        catEle(i).InnerText = ds.Tables(0).Rows(i).Item(1).ToString

        detEle(i) = xmlDoc.CreateElement("内訳")
        detEle(i).InnerText = ds.Tables(0).Rows(i).Item(2).ToString

        accEle(i) = xmlDoc.CreateElement("口座名称")
        accEle(i).InnerText = ds.Tables(0).Rows(i).Item(3).ToString

        moneyEle(i) = xmlDoc.CreateElement("収支")
        moneyEle(i).InnerText = ds.Tables(0).Rows(i).Item(4).ToString

        comEle(i) = xmlDoc.CreateElement("備考")
        comEle(i).InnerText = ds.Tables(0).Rows(i).Item(5).ToString

        idEle(i) = xmlDoc.CreateElement("id")
        idEle(i).InnerText = ds.Tables(0).Rows(i).Item(6).ToString

        recordElements(i).AppendChild(dateEle(i))
        recordElements(i).AppendChild(catEle(i))
        recordElements(i).AppendChild(detEle(i))
        recordElements(i).AppendChild(accEle(i))
        recordElements(i).AppendChild(moneyEle(i))
        recordElements(i).AppendChild(comEle(i))
        recordElements(i).AppendChild(idEle(i))

        rootEle.AppendChild(recordElements(i))

    Next i

    '作成したルート要素をxmlDocの子要素として追加
    xmlDoc.AppendChild(rootEle)

    '作成したDOMドキュメントをファイルに保存
    xmlDoc.Save("./data/account.xml")

    'datasetの解放
    da.Dispose()
    ds.Dispose()

・・・こんなしんどいことをやろうとしてました(;´д` )

-vb.net, 交差運転日記

執筆者:


comment

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

no image

Dell Latitude E6520 を買ってみた

デルのノートパソコンを購入。型はLatitude E6520という法人向けのモデル。あまりお金をかけずにカスタマイズして10%OFFも適用しておよそ12万弱。業務用のモデルだからかどうかわからないが付 …

no image

ブドウ糖ランキング

5位:ぶどう糖 チップ状タイプ チャック付 110g/YUWA 口の中にいれると溶けづらく歯触りは固い。 4位:夢のくちどけ ぶどう糖 タブレットタイプ 個包装 18粒 ソフトタイプのブドウ糖で特徴は …

鉄フライパンとテフロンフライパン調理結果に違いは出るか

2年前くらいから使用している鉄フライパン(クレープパン)でお好み焼きをまた最近焼き始めたところ、以前に比べて味がやたらと美味しく感じられるようになった。もちろん気のせいかもしれないが。前から作っていた …

no image

すごいパソコンデスク

VILAGRASA ARC 1. 2. 3.

no image

ディスプレイドライバの応答停止と回復 のエラーについて

画面が突然暗くなってから数秒して復帰する、という現象が頻発するようになった。PCを再セットアップしてからなったので具体的な発生原因がわからず。やれることはやるだけやってみたが(ドライバを最新にしてみた …