2009年4月27日月曜日

ASP.NET C# と MySQL で 引数を指定するストアドプロシージャを使う


// DB接続
String param = "server=localhost;user id=my_user; password=1234; database=my_db; Pooling=false;";
MySqlConnection conn = new MySqlConnection(param);
conn.Open();

// プロシージャ名を指定した MySqlCommand インスタンスの生成
MySqlCommand cmd   = new MySqlCommand("my_proc1", conn);
cmd.CommandType    = CommandType.StoredProcedure;

// 入力パラメータの追加
MySqlParameter prm = new MySqlParameter("p_id", MySqlDbType.Int16);
prm.Direction      = ParameterDirection.Input;
prm.Value          = 10;
cmd.Parameters.Add(prm);

// 発行と内容取得
MySqlDataReader reader = cmd.ExecuteReader();
if (reader != null) {
    while (reader.Read()) {
        for (int i = 0; i < reader.FieldCount; i++) {
            Label1.Text += reader.GetName(i) + " : " + reader.GetValue(i) + "
"; } } reader.Close(); } conn.Close();

2009年4月24日金曜日

MySQL のセッションの調査と切断

-- セッションの表示
show processlist;

-- セッションの切断
kill [processId];

2009年4月23日木曜日

MySQL のストアドプロシージャ

MySQL のストアドプロシージャを利用するためのコマンド類。
-- 区切り文字を変更する
-- ※スクリプト中のセンテンスの終了に「;」を使用するため、変更する。
DELIMITER //

-- ストアドプロシージャの作成
CREATE PROCEDURE my_proc1()
BEGIN 
  SELECT my_id, my_name FROM my_table;
END
//

-- ストアドプロシージャの呼び出し
CALL my_proc1()
//

-- 戻り値つきストアドプロシージャ
CREATE PROCEDURE my_proc2(OUT param1 INT)
BEGIN
  SELECT COUNT(*) INTO param1 FROM my_table;
END
//

-- 戻り値つきストアドプロシージャの呼び出し
CALL my_proc2(@a)
//

-- 戻り値の確認
SELECT @a

-- 引数つきストアドプロシージャ
-- 文字列を結合する
CREATE PROCEDURE my_proc3(IN param1 VARCHAR(50), OUT param2 VARCHAR(50))
BEGIN 
  SELECT CONCAT('Hello, ', param1,'!') INTO param2;
END
//

-- 引数つきストアドプロシージャの呼び出し
CALL my_proc3('world', @a)
//

-- 作成したプロシージャの確認
SHOW PROCEDURE STATUS
//

-- 作成したプロシージャの内容確認
SHOW CREATE PROCEDURE my_proc1
//

-- 作成したプロシージャの削除
DROP PROCEDURE my_proc1
//


2009年4月22日水曜日

ASP.NET C# メモ

C# で URL 情報を取得する。 http://localhost:2792/hoge/Default.aspx の場合
// URIの絶対パス
// /shop/Default.aspx
Request.Url.AbsolutePath;

// 絶対URI
// http://localhost:2792/hoge/Default.aspx
Request.Url.AbsoluteUri;

// ホスト名(IPアドレス)とポート番号
// localhost:2792
Request.Url.Authority;

2009年4月20日月曜日

ASP.NET C# 動的なオブジェクトの設置

AS3.0 と同じ様にに書ける(AS3.0 がとすべきかな?)。 イベントの追加もできる。
protected System.Web.UI.WebControls.Button Button1;

protected void Page_Load(object sender, EventArgs e)
{
    Button1                    = new Button();
    Button1.ID                 = "Button1";
    Button1.Style["Position"]  = "Absolute";
    Button1.Style["Top"]       = "100px";
    Button1.Style["Left"]      = "100px";
    Button1.Style["Width"]     = "30px";
    Button1.Click             += new EventHandler(onClickButton);
    form1.Controls.Add(btn);
}

protected void onClickButton(object sender, EventArgs e)
{
    Button btnSender = (Button)sender;
    string strButtonID = btnSender.ID;
}
Width を指定してあげないとえらいことになりましたw

2009年4月17日金曜日

MySQL のセットアップ

ODBC の設定から CSE での接続まで。

環境

  • windowsXP SP3
  • MySQL 5.1
  • Connector/ODBC 5.1.5
  • Common SQL Environment 1.59

手順

ODBCの設定などは、公式サイトの手順通り、下記の順番で進めばでOK。

  1. 24.1.2.1. Connector/ODBC の入手方法
  2. MySQL Connector/ODBC 5.1 Downloads
    環境に合わせて。特に問題なければ Windows MSI Installer (x86) で。
  3. 24.1.2.3.1.1. インストーラを使用して Windows Connector/ODBC ドライバをインストールする
  4. 24.1.3.2.1. Windows での Connector/ODBC DSN の追加
    Data Source Name, Description は適当で。Server は書いてある通り。User, Password は有効なものを。

接続

CSE での接続。

  1. つみきWebさんからダウンロード。
  2. 適当な場所に解凍&実行。
  3. データベース->接続 を開く。
  4. DBMS: で ODBC汎用 を選択。
  5. データソース: で先ほど作った Data Source Name を選択。
  6. ユーザ名とパスワードは空にするとデフォルト値を適用。
  7. OK で接続。

※エラーが出るようなら、一度 windows を再起動。

MySql の基本的なコマンド

ログイン(PATHが通っている場合)

C:\> mysql -u my_user -p my_db;

データベース操作

-- データベースの確認
SHOW DATABASES;

-- データベースの作成
CREATE DATABASE my_db;

-- データベースを選択する
USE my_db;

ユーザ操作

-- SELECT、INSERT、UPDATE、DELETEができるユーザの追加
GRANT SELECT, INSERT, DELETE, UPDATE ON *.* TO my_user IDENTIFIED BY '1234';

-- 登録されているユーザを確認する。
SELECT Host, User, Password FROM mysql.user;

-- root のパスワードを変更する。
SET PASSWORD FOR root@localhost=PASSWORD('admin');

テーブル操作

-- DBに存在するテーブルを見る
SHOW TALBES;

テーブルを作成する

CREATE TABLE my_table ( 
      my_id INT NOT NULL AUTO_INCREMENT
    , my_name VARCHAR(255) NOT NULL DEFAULT 'hogeo'
    , PRIMARY KEY (my_id)
);

テーブル名の変更

ALTER TABLE my_table RENAME TO your_table;

2009年4月14日火曜日

stage と ドキュメントクラス

オブジェクトを addChild するときに、どっちを使ったものか悩ましい。

外部クラスに何らかのインスタンスを作成させて、addChild しようと思うんで、stage か ドキュメントクラスを渡してあげようとするんだけど、結果として表示上は同じように表示されるので、どちらを使った方がよりいいのかわからない。

違いがわかればいいんだけど、それらしい情報が見当たらないし...ん~。

とりあえず、任意のクラスを指定できるので、ドキュメントクラスを利用することにしてみます。

2009年4月10日金曜日

AS3 で Static

package {
public class StaticTest 
{
    public static function main():void 
    {
            trace('StaticTest.main');
    }
}
import StaticTest;
StaticTest.main();

2009年4月8日水曜日

TextField にマウスが反応して困った

MovieClip のインスタンスでボタンを作成しようとしたとき、MovieClip に含まれる TextFild のインスタンスに、マウスが反応してしまって困った。

var btnSampleIns:btnSample = new btnSample();
btnSampleIns.buttonMode    = true;
btnSampleIns.mouseChildren = false;

buttonMode プロパティを true とだけしても、マウスが反応してしまう。反応させないようにするなら mouseChildren プロパティを false にしないといけない。

リファレンスを見たら、

このプロパティは、SimpleButton クラスではなく、Sprite クラスのインスタンスを使用してボタンを作成するときに役立ちます。

どんぴしゃ。

MC以下のすべての Child を removeChild() したい

while(mc.numChildren > 0){
    mc.removeChildAt(0);
}