# 共通ドキュメント

## [共通ライブラリ概要]Command

### 概要

データベースクエリーのラッパー。

### 使用方法

1. クエリー文字列、クエリータイプから CFW.Database.Command クラスの新規インスタンスを生成する。
2. 必要に応じ Parameter オブジェクトを作成して追加する。
3. ConnectionオブジェクトにCommandを実行させる

#### 注意

- 動的パラメータをクエリー文字列内に直接記述しない。必ずパラメータクエリーを作成し、Parameterオブジェクトを使用する。

#### 例

##### 例 - 選択クエリー実行(C#)

    Connection connection = ConnectionFactory.GetConnectionByName("default");
    connection.Open();
    try{
    	string query = @"select * from MST_CITY where CITY_CODE=@cityCode";

    	//このような作成の仕方はダメ
    	// cityCode = "Z001";
    	//string query = @"select * from MST_CITY where CITY_CODE= '" + cityCode + "'";

    	//これもダメ。全てのクエリーが正しくConnection.Quoteを使っているかどうかチェックしている暇はない。
    	// cityCode = "Z001";
    	//string query = @"select * from MST_CITY where CITY_CODE= " + Connection.Quote( cityCode ) + "";

    	Command command = new Command(query,CommandType.Text);
    	command.SetParameter(new CFW.Database.Parameter( "@cityCode",DbType.String,"1"));
    	DataSet result = connection.ExecuteQuery(command);

    }
    catch(Exception ex){
    	ErrorHandler handler = ErrorHandler.GetInstance(ex);
    	handler.WriteLog();
    }
    finally{
    	connection.Close();
    }

##### 例 - 更新クエリー実行(C#)

    Connection connection = ConnectionFactory.GetConnectionByName("default");
    connection.Open();
    try{
    	string query = @"update MST_CITY set AREAS_CODE = @areasCode where CITY_CODE=@cityCode";
    	Command command = new Command(query,CommandType.Text);
    	command.SetParameter(new CFW.Database.Parameter( "@areasCode",DbType.String,"JPN"));
    	command.SetParameter(new CFW.Database.Parameter( "@cityCode",DbType.String,"1"));
    	int result = connection.ExecuteUpdate(command);

    }
    catch(Exception ex){
    	ErrorHandler handler = ErrorHandler.GetInstance(ex);
    	handler.WriteLog();
    }
    finally{
    	connection.Close();
    }