2011年11月15日火曜日

オラクル PLSQL入門

http://www.shift-the-oracle.com/sql/create-table.html



CREATE TABLE USER_MASTER
(
   USER_ID           VARCHAR2(8) NOT NULL,
   DEPT_NO           VARCHAR2(8),
   USER_NAME         VARCHAR2(32),
   CREATED_ON        DATE DEFAULT SYSDATE,
   MODIFIED_ON       DATE
);

--■■■■■■■■■■■■■■■■■プライマリキーを作成するDDL文■■■■■■■■■■■■■■■■■

ALTER TABLE USER_MASTER ADD CONSTRAINT USER_MASTER_PK PRIMARY KEY (USER_ID) ;



--■■■■■■■■■■■■■■■■■テーブル一覧 ■■■■■■■■■■■■■■■■■

select table_name from user_tables;



--■■■■■■■■■■■■■■■■■UPDATE■■■■■■■■■■■■■■■■■
UPDATE (
     SELECT
            USER_ID, USER_NAME
     FROM USER_MASTER
) -- [ ビューの別名 ]
SET
    USER_NAME = USER_NAME || ' さま';

--■■■■■■■■■■■■■■■■■レコード削除 ■■■■■■■■■■■■■■■■■

-- USER_ID = '0020' OR  USER_ID ='0019' を削除
DELETE
  FROM USER_MASTER
 WHERE USER_ID IN ('0020', '0019');

--■■■■■■■引数ありのカーソル■■■■■■
------------------------------------------------------------------------------
--  カーソル定義
------------------------------------------------------------------------------
  CURSOR CJIDO(p_START   IN NUMBER,                --引数ありのカーソルを作成
               p_END     IN NUMBER,
               p_KIJUNBI IN NUMBER) IS
    SELECT A.KOJIN_NO,
           A.SHIMEI_KANA,
           A.SHIMEI_KANJI,
      FROM EAT_ATENAKIHON A
     WHERE A.SEINENGAPI BETWEEN p_START AND p_END
       AND A.GENZON_KBN < 3;
      
CRJIDO   CJIDO%ROWTYPE;                         --カーソルにある、全てのテーブル列型を取得、
******呼び出し元*******
FOR CRJIDO IN CJIDO(ISTART,IEND,V_KIJUNBI) LOOP    --カーソルの呼出
    DBMS_OUTPUT.PUT_LINE(CRJIDO.KOJIN_NO);                          
END LOOP;

--■■■■■■テーブルを使ったコレクション■■■■■■
    -- 取得したデータのワーク領域
    TYPE MTJIDO_TYPE IS TABLE OF EQT_SEIJINSYA%ROWTYPE INDEX BY BINARY_INTEGER;
    MJIDO_WORK MTJIDO_TYPE;
   
    MJIDO_WORK(1).「カラム名」:= 'TEST';       --文字列を代入

--■■■■■■動的SQL■■■■■■
DBMS_SQL.DEFINE_COLUMN(カーソル変数名, 位置, 変数名, サイズ);

--■■■■■■定数の宣言■■■■■■
--定数名 定数指定 データ型 初期値;
--初期値を設定しない場合はNULLになります。
NUM CONSTANT PLS_INTEGER := 10;

--■■■■■■例外処理EXCEPTION■■■■■■
BEGIN
  BEGIN
    SELECT 「カラム名」 INTO 「カラムのデータ型」 FROM 「テーブル名」WHERE 「カラム名」= 1;
  EXCEPTION
      WHEN NO_DATA_FOUND THEN                --SQLが行をもどさない場合の例外
        DBMS_OUTPUT.PUT_LINE(SQLCODE);
      WHEN OTHERS THNE
        DBMS_OUTPUT.PUT_LINE(SQLCODE);       --全ての例外を出力
  END;
END;


--■■■■■■ユーザ定義例外処理EXCEPTION■■■■■■
BEGIN
  IS
    uSER_eXCEPTION EXCEPTION;  --ユーザ定義例外を宣言
  BEGIN
    SELECT 「カラム名」 INTO 「カラムのデータ型」 FROM 「テーブル名」WHERE 「カラム名」= 1;
    RAISE  uSER_eXCEPTION;    --ユーザ定義例外の呼出
  EXCEPTION
      WHEN uSER_eXCEPTION THEN
        DBMS_OUTPUT.PUT_LINE('ユーザ定義例外の呼出です');
  END;
END;

--■■■■■FOR UPDATE句■■■■■■
BEGIN
  IS
    CURSOR c_1 IS
        SELECT 「カラム名」
        INTO 「カラムのデータ型」
        FROM 「テーブル名」
        WHERE 「カラム名」> 100
        FOR UPDATE NOWAIT;    --ロックが解放されるのを待たずに、プログラムにもどり、例外が発生します。
  BEGIN
    OPEN c_1
       FOR r_1 IN c_1 LOOP;
               UPDATE(SELECT  r_1.「カラム名」FORM 「テーブル名」) SET 「カラム名」= 'レコード';
               COMMIT;
       END LOOP;
  EXCEPTION
      WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('ロックが掛かっているか、行がありません');
  END;
END;
--■■■■■プロシジャーの作成■■■■■■
CREATE OR REPLACE PROCEDURE proc_1(
  i1 IN PLS_INTEGER;  --引数
  i2 IN PLS_INTEGER;
) RETURN PLS_INTEGER IS

  USER_i_1 PLS_INTEGER;  --フィールド変数
  USER_i_2 PLS_INTEGER;
BEGIN
  実行部;
  RETURN 0;
END;

2011年11月11日金曜日

サッサと PHP5のクラス定義解説

クラス定義
<?php
class Hoge{
}
?>
new Hoge();

コンストラクタ
<?php

include 'Debug_Show.php';


class Hoge{
    function Hoge(){
        print "コンストラクタです";
    }

}

new Hoge();

クラスメソッド
<?php

class Hoge{
    static function calc($str){
        print $str;
    }
}
Hoge::calc("クラスメソッド");
クラス変数
<?php

Class Hoge {
    static $str = "クラス変数";

}

print Hoge::$str;


メンバー変数
<?php

Class Hoge {
 public $a = "メンバー変数";
}

$hoge = new Hoge();
echo $hoge->a;

メソッド

<?php

Class Hoge {
    function calc(){
        print 1+1;
        print "メソッド";
    }
}

$hoge = new Hoge();
echo $hoge->calc();


クラス定数
<?php

Class Hoge {
    const STR = "クラス定数";

}

print Hoge::STR;

thisとは?そのクラスをさします
<?php

Class Hoge {
    var $a= "thisです";
    function calc($a){
        print $a;
        print "<br />";
        print $this->a;
    }
}

$hoge = new Hoge();
$hoge->calc("thisではない");

#thisではない
#thisです

オブジェクトのコピー
<?php

Class Hoge {
    var $a= "thisです。";
}

$hoge = new Hoge();
$obj = $hoge;
print $obj->a;
print $hoge->a;

$obj->a = "てすと。";

print $obj->a;
print $hoge->a;

$b = $obj->a;
$b = "ffff。";

print $obj->a;
print $hoge->a;


#thisです。thisです。てすと。てすと。てすと。てすと。

継承 親子関係
<?php

Class Oy {
    var $a= "Oyです。";

    function getA(){
        print $this->a;
    }
}

Class Ko extends Oy{

}

$ko =  new Ko();
print  get_Class($ko);
$ko->getA();
print $ko->a;


#KoOyです。Oyです。

Androidアプリ開発 CVSファイルとDBへの書き込み

/********************アクティビティクラス*************************/
package kawasaki.com;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

import android.app.Activity;
import android.content.ContentValues;
import android.content.res.AssetManager;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;

public class Db_Test_1 extends Activity {
    /** Called when the activity is first created. */
    //メンバー変数
    //データベースヘルパーの作成

    private DatabaseHelper helper;

    //データベースの宣言
    public static SQLiteDatabase mDb;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //DBファイルの真偽
        File file = new File("/data/data/kawasaki.com/databases/sample.db");
        if(file.exists()){
            file.delete();
            Log.d("kawasaki_debug","ファイルを消去しました");
        }else{
            Log.d("kawasaki_debug","ファイルはありません");
        }

        //DBの作成
        helper  = new DatabaseHelper(this);

        //CSVファイルの読み込み準備
        AssetManager as = getResources().getAssets();
        //DBオープン
        mDb = helper.getWritableDatabase();
        //DB値格納変数
        ContentValues value = new ContentValues();
        try {

            BufferedReader bf = new BufferedReader(new InputStreamReader(as.open("test_csv.csv")));
            String s;
            while((s = bf.readLine()) != null){
                String [] strAry = s.split(",");
                Log.d("kawasaki_debug","" + strAry[0] + "");
                value.put("NAME",strAry[0]);
                value.put("TEL",strAry[1]);
                mDb.insert("BOOK",null,value);
            }
        } catch (IOException e) {
            // TODO 自動生成された catch ブロック
            Log.d("kawasaki_debug", "" + e + "");
        }
    }

    //DBクローズ
    @Override
    public void onDestroy(){
        super.onDestroy();
        helper.close();
    }
}

/**********************DatabaseHelperクラス**********************/

import java.io.File;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper{

    //コンテキスト
    public DatabaseHelper(Context context){
        super(context,"sample.db",null,1);
        //super(context, null, null, 1);
        System.out.println("DBです");
    }

    //テープル作成
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO 自動生成されたメソッド・スタブ
        db.execSQL("CREATE TABLE BOOK (_id INTEGER PRIMARY KEY,NAME TEXT,TEL TEXT)");


    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
        // TODO 自動生成されたメソッド・スタブ
    }
}
★★★★★★★★★★★★★まとめ★★★★★★★★★★★★★★
AndroidでもDB基本的なところはかわりません、
SQLiteOpenHelperなど便利なクラスもありますので積極的に使うべきですね、

2011年11月1日火曜日

android開発 サイト

開発環境参考サイト
http://codezine.jp/article/detail/5943


eclipseのサイトURL

    • File Password: 0Rfkkk3
    ①androidSDKのtoolにパスを通す。
    ②eclipseにアンドロイドのフラグインを取り込む、使用可能なソフトウエアで「android」で検索、
余裕があればhttp://codezine.jp/article/detail/5957で電卓アプリなど作ってみようかな?