2008年1月18日金曜日

色々とお詫び

どういうきっかけかは知らないけれど、このページを見てくれた皆様へ。

色々とコメントなども残っていなかったので気にしてませんでしたが、サンプルを書いているところなどで表示されていない箇所やインデントがなってなくて汚かったりしている箇所が多々見つけました。

色々対策をしてみたのですがうまく表示できませんでしたのでここでお詫び申し上げます。


次からはこれらのことに気をつけて書いていきたいと思います。

[C#]XMLの読み込み 書き込み

とあることをやるためにDBを使わずXMLを使うことになったのでとりあえず書き残します。

始めにXmlを操作するので宣言をしておく
ついでにパスを取得したりもするのでIOの宣言もしておく
using System.Xml;
using System.IO;

public class XmlIo
{
XmlDocument doc = new XmlDocument();
//絶対パスを取得しファイルを指定する
string xmlPath = System.IO.Directory.GetCurrentDirectory();
string xmlFile = "data.xml";
#region XML読み込み
public void ReadXml(string nodes)
{
XmlDocument doc = new XmlDocument();
doc.Load(xmlFile);
//リストに引数を渡す
XmlNodeList list = doc.SelectNodes(nodes);
#if DEBUG
foreach (XmlNode node in list)
{
System.Diagnostics.Debug.Write(node.InnerText + "\n");
}
#endif
}
#endregion
#region XML書き込み
public void SaveXml()
{
XmlDocument doc = new System.Xml.XmlDocument();
var estate = doc.CreateElement("estate");
var name = doc.CreateElement("name");
name.AppendChild(doc.CreateTextNode("○○"));
estate.AppendChild(name);
var terop = doc.CreateElement("terop");
terop.AppendChild(doc.CreateTextNode("XMLの書き込み"));
estate.AppendChild(terop);
var items = doc.CreateElement("items");
estate.AppendChild(items);
doc.AppendChild(estate);
//デバッグ時はXmlを上書きされないようにする
#if DEBUG
string debugXml = xmlPath + "/../xml" + xmlFile;
var writer = new System.Xml.XmlTextWriter(debugXml, Encoding.UTF8);
#else
var writer = new System.Xml.XmlTextWriter(xmlPath + xmlFile, Encoding.UTF8);
#endif
writer.WriteStartDocument();
writer.Formatting = System.Xml.Formatting.Indented;
doc.WriteTo(writer);
writer.Close();
}
#endregion
}

XmlDocumentを使ってやりとりを行っています。
ReadXml()では引数にXMLのタグ(?)を書くようにします。

リストに引数が渡り、その部分のデータを取得してます。
#if DEBUGの部分ではデバッグ時に確認のため出力ウィンドウに取得したデータを表示させるようにしてます。

SaveXml()に引数はないです。

現在未完成なので説明とかも簡略化します。
varは、intやchar等のいろんな型に対応しています。
しかしローカル変数としか使えません。

CreateElementで始め、AppendChildで終わらせる。







とイメージしてもらえれば幸いです。


#ifDEBUGではデバッグ中に書き出すファイルが上書きされると困る場合お使いください。




新年ですね。

昨年は3ヶ月もしないうちにいろんな人に見てもらえ、驚いてます。

しかしながらあまり書く時間と気力がないのでのっそのっそとやってます。

今年もかけるときがあったら書こうと思います。

[oracle]一時表領域の作成と変更

自動拡張したら良いんだろうけれど、面倒なので新しく一時領域を作ってインポートしたりしました。

新しい一時領域を作成(1G分の領域TEMP2の作成)
create temporary tablespace TEMP2 TEMPFILE 'temp2.dbf' size 1000M;

ユーザーのデフォルト一時表領域の変更(TEMP2に変更)
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP2;

これで新しい一時表領域が変わったはずです。

確認
SELECT USERNAME, TEMPORARY_TABLESPACE FROM DBA_USERS;

TEMPORARY_TABLESPACEの欄がTEMP2になっていれば成功です。

不要になった表領域の削除
drop table space '表領域名' includeing contents;