« 女性ホルモン恐るべし | Main | は~とちょこ 32 »

2004.04.04

は~とデーターベース計画


楽しい曲を聴きたいときは楽しい曲を、静かな曲を聴きたいときは静かな曲を検索できるデーターベースプログラムをつくるぞ。

XMLファイルへのデーター保存は成功です。
サブプロジェクト@コードネーム=くるるちゃん@は順調に進んでます。

クラスheartDataBaseから派生させた6種類のクラスに格納するすべてのデーターをこのメソッドで保存してしまいます。
heartXmlWriterクラスのWriteDataメソッド
'
'要素のツリーを書き込む
'引数:外部からの最初のコール時は、heartData
Public Function WriteData(ByRef aData As heartDataBase) As Boolean
'自分のルートを書き込み
Me.WriteStartElement("", aData.GetMYname, "")
'子要素を処理
For i As Int16 = 0 To aData.GetCHILDcount - 1
WriteData(aData.CHILD(i))
Next i
'要素を処理
For i As Int16 = 0 To aData.GetDATAcount - 1
Me.WriteStartElement("", aData.GetDATAname(i), "")
Me.WriteString(aData.DATA(i))
Me.WriteEndElement()
Next i
'自分のルートを閉じる
Me.WriteEndElement()
End Function

メソッドの使い方はこうです。
'データー作成
Dim data As heartData = NewHeartData()
'ファイル名heartdata.xmlに書き込み
Dim outXml As heartXmlWriter = New heartXmlWriter("heartdata.xml", Nothing)
outXml.WriteData(data)
outXml.Flush()
outXml.Close() 'クローズし忘れてはいけません
heartDataオブジェクトにはタマネギのように入れ子にデーターが入ってます。
WriteDataメソッドではそのタマネギを、ひと皮むいてはデーター保存、むいてはデーター保存を次々にくりかえします。
その繰り返し処理は再帰呼び出しでくるくるっとやっちゃいます。
コードネーム=くるるちゃんってわけです♥

ちなみに、
'シリアライズ
Dim sXml As XmlSerializer = New XmlSerializer(GetType(heartData))
Dim of As FileStream = New FileStream("SERIAL.XML", FileMode.Create)
sXml.Serialize(of, data)
これでデーターの保存をする方法もあるのですが、
既定の(引数がない)コンストラクターが(Publicになっている)必要がある。
保存したいデーターをPublicなメンバーに格納する必要がある。
という条件を一部のクラスが満たしてないので出来ませんでした。

P.S.
瓶詰妖精では黄色い瓶の妖精さんの
「ちりりちゃん」がスキです♥ てへっ


« 女性ホルモン恐るべし | Main | は~とちょこ 32 »

Comments

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/4052/395142

Listed below are links to weblogs that reference は~とデーターベース計画:

« 女性ホルモン恐るべし | Main | は~とちょこ 32 »