/// <summary> /// 引数つきコンストラクタ /// </summary> /// <param name="_myEntity">各エントリークラス</param> public BizWorker(Entry _myEntity,string _assemblyname) { //実態を渡す MyEntry = _myEntity; ClassName = this.GetType().FullName; AssemblyName = _assemblyname; }
/// <summary> /// SQLコマンドを設定する /// </summary> /// <param name="_type">機能種別定数</param> /// <param name="_conn">DB接続変数</param> /// <param name="_entry">エントリークラス</param> /// <param name="_tran">トランザクション・トランザクション未指定の場合,NULLが入ってくる</param> /// <returns></returns> private SqlCommand SetSqlCommand( Common.FUNC_TYPE _type, SqlConnection _conn, Entry _entry, SqlTransaction _tran = null ) { //SQL文の作成 SqlCommand sqlCommand = _conn.CreateCommand(); switch (_type) { case Common.FUNC_TYPE.INSERT: sqlCommand.CommandText = _entry.GetInsertCommandText(); break; case Common.FUNC_TYPE.UPDATE: sqlCommand.CommandText = _entry.GetUpdateCommandText(); break; case Common.FUNC_TYPE.SELECT: sqlCommand.CommandText = _entry.GetDestSelectCommandText(); break; default: SqlContext.Pipe.Send("なにも設定されていません"); return null; } //トランザクション処理の場合のみ if (_tran != null) { sqlCommand.Transaction = _tran; } return sqlCommand; }
/// <summary> /// DBパラメータの設定 /// </summary> /// <param name="_command">SQLコマンド</param> /// <param name="_entry">エントリークラス</param> /// <returns></returns> private bool SetDbParameters(SqlCommand _command,Entry _entry) { bool result = false; try { ////パラメータの作成 SqlParameter param = _command.CreateParameter(); //パラメータ全てを設定 foreach (DBParameters list in _entry.DbParamList) { param = _command.CreateParameter(); param.ParameterName = string.Format("@{0}",list.ParameterName); param.DbType = list.DbType; param.SourceColumn = list.ParameterName; _command.Parameters.Add(param); } result = true; } catch (Exception e) { throw e; } return result; }
/// <summary> /// プライマリーキーの配列を取得する /// </summary> /// <param name="_my">entryクラス</param> /// <param name="_dt">dest用table</param> /// <returns></returns> private DataColumn[] GetPrimaryKey(Entry _my, DataTable _dt) { var collect = new List<DataColumn>(); //パラメータリストからプライマリキーに指定されているパラメータをのみをコレクションに追加 foreach (DBParameters param in _my.DbParamList) { if (param.Primary == true) { collect.Add(_dt.Columns[param.ParameterName]); } } DataColumn[] dataColumnArray = new DataColumn[collect.Count]; collect.CopyTo(dataColumnArray, 0); return dataColumnArray; }
/// <summary> /// トランザクション処理の開始を宣言 /// </summary> /// <param name="_conn">コネクションクラス</param> /// <param name="_entry">エントリークラス</param> /// <returns></returns> private SqlTransaction BeginTransaction(SqlConnection _conn, Entry _entry) { SqlTransaction tran = null; //transaction処理を行う場合 if (_entry.IsTransaction) { tran = _conn.BeginTransaction(IsolationLevel.Serializable); } return tran; }
/// <summary> /// 一時テーブルのデータ破棄を行う /// </summary> protected virtual int TruncateTmpTable(Entry _entry,SqlCommand _command) { int returncode = 0; // 実テーブルをtruncateしないように、参照元テーブル名に // tmpの文字列が含まれない場合のみ実行する if(0 <= _entry.SourceTable.IndexOf("tmp", StringComparison.OrdinalIgnoreCase)){ _command.CommandText = _entry.GetTruncateCommandText(); returncode = _command.ExecuteNonQuery(); } return returncode; }