예제 #1
0
 /// <summary>
 /// 引数つきコンストラクタ
 /// </summary>
 /// <param name="_myEntity">各エントリークラス</param>
 public BizWorker(Entry _myEntity,string _assemblyname)
 {
     //実態を渡す
     MyEntry = _myEntity;
     ClassName = this.GetType().FullName;
     AssemblyName = _assemblyname;
 }
예제 #2
0
        /// <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;
        }
예제 #3
0
        /// <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;
        }
예제 #4
0
        /// <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;
        }
예제 #5
0
        /// <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;
        }
예제 #6
0
        /// <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;
        }