どういうきっかけかは知らないけれど、このページを見てくれた皆様へ。
色々とコメントなども残っていなかったので気にしてませんでしたが、サンプルを書いているところなどで表示されていない箇所やインデントがなってなくて汚かったりしている箇所が多々見つけました。
色々対策をしてみたのですがうまく表示できませんでしたのでここでお詫び申し上げます。
次からはこれらのことに気をつけて書いていきたいと思います。
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;
2007年12月13日木曜日
[oracle]ユーザーに権限を与える
前回インポートについて書きましたが、DBAのロール権限を持っていないと出来ないことが発覚。
(これに気づくまで約1日かかってました。最初から知ってる人に聞くのが一番って事ですね)
まずはじめに権限を持ってるユーザーでログインします。
ロールをユーザーに付与する
GRANT ロール TO 権限を与えるユーザー名 [IDENTIFIED BY password][WITH ADMIN OPTION];
ロールをユーザーに付与するには、GRANT文で付与するロール名を指定し、TO句で付与するユーザー名を指定します。
IDENTIFIED BY句
IDENTIFIED BY句に続けてパスワードを指定すると、既存ユーザーを明確に識別できます(ユーザーが存在しない場合は新規にユーザーが作成されます)。
WITH ADMIN OPTION句WITH ADMIN OPTION句を指定すると、
・ロールがGLOBALロールでない場合、そのロールをほかのロールに付与可能
・ロールをほかのロールから取り消すことが可能
・ロールへのアクセスに必要な認可を変更するため、ロールを変更可能
・ロールを削除可能になります。
ということです。
2007年12月11日火曜日
[oracle]dmpファイルのインポートとエクスポート
そんなに項目がないのであればツールなどでSQLを書けばいいんだけれど、かなり大きなモノになると大変なのでdmpファイルにするらしい。
oracle crientがインストールされていることが最低条件です。
dmpファイルの作成方法
DOSプロンプトを開いて
exp ユーザ名/パスワード@設定しているtns file=作ったファイルを置く場所¥ファイル名 log=ファイルを置く場所¥作ったファイルに関するログファイル
これでdmpファイルという形でエクスポートされている。
次にインポート
imp ユーザ名/パスワード@設定しているtns file=dmpファイルが置いてある場所¥ファイル名 log=dmpファイルが置いてある場所¥作ったファイルに関するログファイル
これでインポートできるはずです。
どうやらバージョンが違うoracleでエクスポートするとインポートできないらしい。
まぁそれ以前に同じバージョンで渡されたdmpファイルがインポートできなかったのでこれであっているかの自信がないです。
[oracle]ユーザーの追加
まずはじめにDOSプロンプトを開いて
sqlplus ユーザー名/パスワード@設定しているtns
と入力しSQLPLUSを開く
SQLPLUSを開いたら
登録したいユーザー名とパスワードを入力する。
create user '登録したいユーザー名' identified by '登録したいパスワード';
権限を与えるために
create role '登録したユーザー名'_ROLE ;
を入力し、権限を与える内容を入力
例)
grant
ALTER PROFILE
,ALTER SESSION
,ALTER SYSTEM
,ALTER TABLESPACE
,ALTER USER
,CREATE PROCEDURE
,CREATE PROFILE
,CREATE PUBLIC SYNONYM
,CREATE ROLE
,CREATE ROLLBACK SEGMENT
,CREATE SEQUENCE
,CREATE SESSION
,CREATE SYNONYM
,CREATE TABLE
,CREATE TABLESPACE
,CREATE TRIGGER
,CREATE VIEW
,EXECUTE ANY PROCEDURE
,SELECT ANY DICTIONARY
,SELECT ANY SEQUENCE
,SELECT ANY TABLEto '登録したユーザー名'_ROLE;
これらの権限を与えるため
grant '登録したユーザー名'_ROLE to '登録したユーザー名' ;
これでユーザーの登録が完了するはず。
2007年11月29日木曜日
[linux]MySQLの文字コード変更方法
どうやらwebサーバとしてMySQLを使う際に文字コードを変更しなければならないらしい。
それも自分で設定ファイルを作成するとのこと。
#vi /etc/my.cnf
これで新規作成する。
その前に現在の設定を確認する。
mysql> status
で確認できます。
mysql> status;
--------------
./mysql Ver 14.12 Distrib 5.0.27, for pc-linux-gnu (i686) using readline 5.0
Connection id: 7110
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: dtdout
Using outfile: ''
Using delimiter: ;
Server version: 5.0.27-Max
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: ujis
Db characterset: ujis
Client characterset: latin1
Conn. characterset: latin1
UNIX socket: /tmp/mysql.sock
Uptime: 2 houts 1 min 14 sec
ってな感じになっていると思います。
必ずしも一緒ではないのでご注意。
見てのとおりcharactersetは4種類定義されています。これらを変更するために先ほども書いた設定ファイルを作成します。下記例はEUC-jpに設定しています。
設定する値はSHOW CHARACTER SETで確認できます。
my.cnf
[client]
default-character-set=ujis
[mysqld]
port=3306
default-character-set=ujis
[mysql]
default-character-set=ujis
設定がうまくいったかどうかは、statusで確認してください。