Beispiel #1
0
        /// <summary>
        /// 指定されたコマンド テキストが、
        /// 動的パラメタライズド クエリであるか確認する。
        /// </summary>
        /// <param name="commandText">コマンド テキスト</param>
        /// <remarks>派生のDamXXXから利用する。</remarks>
        protected void CheckCommandText(string commandText)
        {

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            PerformanceRecorder perfRec = new PerformanceRecorder();
            perfRec.StartsPerformanceRecord();
            Debug.WriteLine("CheckCommandText(開始)");
#endif

            // ここでDamのメンバ変数の状態を初期化する。
            this.init();

            // 2008/10/16---チェック処理の変更(ここから)

            // XMLかどうかを確認するフラグ。
            bool isXML = false;

            try
            {
                // XLMであるか確認する。
                this._xml = new XmlDocument();
                StringReader sr = new StringReader(commandText);
                this._xml.Load(sr);

                // XMLではある。
                isXML = true;
            }
            catch
            {
                // XMLではない。
                isXML = false;
            }

            if (isXML)
            {
                // デバッグ時は構文チェックする。

                // XMLの場合、DPQであるか確認する。
                foreach (XmlNode xmlNode in this._xml.ChildNodes)
                {
                    // 大文字・小文字は区別する。
                    if (xmlNode.Name == PubLiteral.DPQ_TAG_ROOT)
                    {
                        this.Scan(xmlNode);
                        this._QueryStatus = DbEnum.QueryStatusEnum.DPQ;
                    }
                }
            }            

            // 2008/10/16---チェック処理の変更(ここまで)

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            Debug.WriteLine("CheckCommandText(終了):" + perfRec.EndsPerformanceRecord());
#endif

        }
Beispiel #2
0
    /// <summary>ファイルIO(書込)</summary>
    protected void btnFileIOO_Click(object sender, EventArgs e)
    {
        // ループ回数
        int j = int.Parse(this.txtExecCnt.Text);

        // 性能測定オブジェクト
        PerformanceRecorder prec = new PerformanceRecorder();

        // 開始
        prec.StartsPerformanceRecord();

        // StreamWriter
        StreamWriter sw = new StreamWriter(
            this.txtFilePath1.Text, false, Encoding.GetEncoding(CustomEncode.UTF_8));

        // ループ処理
        for (int i = 1; i <= j; i++)
        {
            sw.WriteLine("テスト てすと 手素戸");
        }

        sw.Close();

        // 終了
        this.lblPrefRec1.Text = prec.EndsPerformanceRecord();

        // 結果の出力
        this.lblPrefRec2.Text = prec.ExecTime;
        this.lblPrefRec3.Text = prec.CpuTime;
        this.lblPrefRec4.Text = prec.CpuKernelTime;
        this.lblPrefRec5.Text = prec.CpuUserTime;
    }
Beispiel #3
0
    /// <summary>ファイルIO(読込)</summary>
    protected void btnFileIOI_Click(object sender, EventArgs e)
    {
        // ループ回数
        int j = int.Parse(this.txtExecCnt.Text);

        // 性能測定オブジェクト
        PerformanceRecorder prec = new PerformanceRecorder();

        // 開始
        prec.StartsPerformanceRecord();

        StreamReader sr = new StreamReader(
            this.txtFilePath1.Text, Encoding.GetEncoding(CustomEncode.UTF_8));

        // ループ処理
        for (int i = 1; i <= j; i++)
        {
            this.lblFileData.Text = sr.ReadLine();
        }

        sr.Close();

        // 終了
        this.lblPrefRec1.Text = prec.EndsPerformanceRecord();

        // 結果の出力
        this.lblPrefRec2.Text = prec.ExecTime;
        this.lblPrefRec3.Text = prec.CpuTime;
        this.lblPrefRec4.Text = prec.CpuKernelTime;
        this.lblPrefRec5.Text = prec.CpuUserTime;
    }
Beispiel #4
0
        /// <summary>一般的な例外発生時の処理を実装</summary>
        /// <param name="ex">例外オブジェクト</param>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>画面コード親クラス1から利用される派生の末端</remarks>
        protected override void UOC_ABEND(Exception ex, RcFxEventArgs rcFxEventArgs)
        {
            // 一般的な例外発生時の処理を実装
            // TODO:

            // 性能測定終了

            // イベント処理開始前にエラーが発生した場合は、
            // this.perfRecがnullの場合があるので、null対策コードを挿入する。
            if (this.perfRec == null)
            {
                // nullの場合、新しいインスタンスを生成し、性能測定開始。
                this.perfRec = new PerformanceRecorder();
                perfRec.StartsPerformanceRecord();
            }

            this.perfRec.EndsPerformanceRecord();

            // ACCESSログ出力-----------------------------------------------

            if (MyBaseControllerWin.CanOutPutLog)
            {
                // ------------
                // メッセージ部
                // ------------
                // ユーザ名, レイヤ, 画面名, コントロール名,
                // 処理時間(実行時間), 処理時間(CPU時間)
                // エラーメッセージID, エラーメッセージ等
                // ------------
                string strLogMessage =
                    "," + UserInfo.UserName +
                    "," + "<-----" +
                    "," + this.Name +
                    "," + rcFxEventArgs.ControlName +
                    "," + this.perfRec.ExecTime +
                    "," + this.perfRec.CpuTime +
                    "," + "other Exception" +
                    "," + ex.Message + "\r\n" + this.OriginalStackTrace;
                // OriginalStackTrace(ログ出力)の品質向上
                if (this.OriginalStackTrace == "")
                {
                    strLogMessage += ex.StackTrace;
                }
                else
                {
                    strLogMessage += this.OriginalStackTrace;
                }

                // Log4Netへログ出力
                LogIF.ErrorLog("ACCESS", strLogMessage);
            }
            // -------------------------------------------------------------
        }
Beispiel #5
0
    /// <summary>スリープ</summary>
    protected void btnSleep_Click(object sender, EventArgs e)
    {
        // ループ回数
        int j = int.Parse(this.txtExecCnt.Text);

        // 性能測定オブジェクト
        PerformanceRecorder prec = new PerformanceRecorder();

        // 開始
        prec.StartsPerformanceRecord();

        // ループ処理
        for (int i = 1; i <= j; i++)
        {
            System.Threading.Thread.Sleep(0);
        }

        // 終了
        this.lblPrefRec1.Text = prec.EndsPerformanceRecord();

        // 結果の出力
        this.lblPrefRec2.Text = prec.ExecTime;
        this.lblPrefRec3.Text = prec.CpuTime;
        this.lblPrefRec4.Text = prec.CpuKernelTime;
        this.lblPrefRec5.Text = prec.CpuUserTime;
    }
Beispiel #6
0
        // 2009/09/01 & 2009/09/25-end

        #endregion

        #region P層フレームワークの共通処理

        #region 開始 終了処理のUOCメソッド

        /// <summary>フレームワークの対象コントロールイベントの開始処理を実装</summary>
        /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>画面コード親クラス1から利用される派生の末端</remarks>
        protected override void UOC_PreAction(FxEventArgs fxEventArgs)
        {
            // フレームワークの対象コントロールイベントの開始処理を実装する
            // TODO:

            // 認証ユーザ情報を取得する ------------------------------------
            this.GetUserInfo();

            // -------------------------------------------------------------

            // 権限チェック ------------------------------------------------
            // -------------------------------------------------------------

            // 閉塞チェック ------------------------------------------------
            // -------------------------------------------------------------

            // ACCESSログ出力 ----------------------------------------------

            // ------------
            // メッセージ部
            // ------------
            // ユーザ名, IPアドレス,
            // レイヤ, 画面名, コントロール名, 処理名
            // 処理時間(実行時間), 処理時間(CPU時間)
            // エラーメッセージID, エラーメッセージ等
            // ------------
            string strLogMessage =
                "," + UserInfo.UserName +
                "," + Request.UserHostAddress +
                "," + "----->" +
                "," + this.ContentPageFileNoEx +
                "," + fxEventArgs.ButtonID;

            // Log4Netへログ出力
            LogIF.InfoLog("ACCESS", strLogMessage);

            // -------------------------------------------------------------

            // 性能測定開始
            this.perfRec = new PerformanceRecorder();
            this.perfRec.StartsPerformanceRecord();
        }
Beispiel #7
0
        /// <summary>業務例外発生時の処理を実装</summary>
        /// <param name="baEx">BusinessApplicationException</param>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>画面コード親クラス1から利用される派生の末端</remarks>
        protected override void UOC_ABEND(BusinessApplicationException baEx, RcFxEventArgs rcFxEventArgs)
        {
            // 業務例外発生時の処理を実装
            // TODO:

            // ここに、メッセージの組み立てロジックを実装する。

            // メッセージ編集処理 ------------------------------------------

            // -------------------------------------------------------------

            // メッセージ表示処理 ------------------------------------------

            // -------------------------------------------------------------

            // 性能測定終了

            // イベント処理開始前にエラーが発生した場合は、
            // this.perfRecがnullの場合があるので、null対策コードを挿入する。
            if (this.perfRec == null)
            {
                // nullの場合、新しいインスタンスを生成し、性能測定開始。
                this.perfRec = new PerformanceRecorder();
                perfRec.StartsPerformanceRecord();
            }

            this.perfRec.EndsPerformanceRecord();

            // ACCESSログ出力-----------------------------------------------

            if (MyBaseControllerWin.CanOutPutLog)
            {
                // ------------
                // メッセージ部
                // ------------
                // ユーザ名, レイヤ, 画面名, コントロール名,
                // 処理時間(実行時間), 処理時間(CPU時間)
                // エラーメッセージID, エラーメッセージ等
                // ------------
                string strLogMessage =
                    "," + UserInfo.UserName +
                    "," + "<-----" +
                    "," + this.Name +
                    "," + rcFxEventArgs.ControlName +
                    "," + this.perfRec.ExecTime +
                    "," + this.perfRec.CpuTime +
                    "," + baEx.messageID +
                    "," + baEx.Message;

                // Log4Netへログ出力
                LogIF.WarnLog("ACCESS", strLogMessage);
            }

            // -------------------------------------------------------------            
        }
Beispiel #8
0
        /// <summary>開始処理</summary>
        protected override void UOC_Pre()
        {
            // ACCESSログ出力 ----------------------------------------------

            if (MyBaseAsyncFunc.CanOutPutLog)
            {
                // ------------
                // メッセージ部
                // ------------
                // ユーザ名, レイヤ, 画面名, コントロール名,
                // 処理時間(実行時間), 処理時間(CPU時間)
                // エラーメッセージID, エラーメッセージ等
                // ------------
                string strLogMessage =
                    "," + "-" +
                    "," + "-----*" +
                    "," + this.UIElementName +
                    "," + this.AsyncFunc.Method.Name;

                // Log4Netへログ出力
                LogIF.InfoLog("ACCESS", strLogMessage);
            }

            // -------------------------------------------------------------

            // 性能測定開始
            this.perfRec = new PerformanceRecorder();
            this.perfRec.StartsPerformanceRecord();
        }
Beispiel #9
0
        /// <summary>SQLの実行</summary>
        private void btnExecQuery_Click(object sender, EventArgs e)
        {
            string sql = "";
            string log = "";
            string caption = "";

            #region 性能測定関係の変数

            // 2009/09/25-start

            // 性能測定
            PerformanceRecorder prfRec = null;

            //// 性能測定-開始
            //prfRec = new PerformanceRecorder();
            //prfRec.StartsPerformanceRecord();

            //// 性能情報を出力
            //log += "【性能情報-チェック処理】" + "\r\n";
            //log += prfRec.EndsPerformanceRecord() + "\r\n\r\n";

            // 2009/09/25-end

            #endregion

            #region コマンドの設定

            try
            {
                // 実行中はトランザクションの制御方式を変更できないようにする。
                this.groupBoxTx.Enabled = false;

                // コマンド
                if (this._loadFilePath == "")
                {
                    // ファイルパスが指定されている。
                    ((BaseDam)this._dam).SetSqlByCommand(this.txtSQL.Text);
                    caption = this.RM_GetString("RunTextBox");
                   
                }
                else
                {
                    // ファイルパスが指定されていない。
                    ((BaseDam)this._dam).SetSqlByFile(this._loadFilePath); 
                    caption = PubCmnFunction.GetFileNameNoEx(this._loadFilePath, '\\') + this.RM_GetString("RunFile");
                   
                }
            }
            catch (Exception Ex)
            {
                // チェックエラーのメッセージを表示する
                MessageBox.Show(Ex.Message);

                // 処理の中断
                return;
            }

            #endregion

            //// HiRDBデータプロバイダの配列バインド
            //bool hrdArryBind = false;

            try
            {
                #region メッセージ

                if (((BaseDam)this._dam).IsDPQ)
                {
                    MessageBox.Show(this.RM_GetString("MSG_EXEC_DQP"), caption);

                }
                else
                {
                    MessageBox.Show(this.RM_GetString("MSG_EXEC_SPQ"), caption);

                }

                #endregion

                #region パラメタの設定

                DataTable dtParams = ((BaseDam)this._dam).GetParametersFromPARAMTag();

                foreach (DataRow dr in dtParams.Rows)
                {
                    if (((bool)dr[0]))
                    {
                        // ユーザパラメタ
                        ((BaseDam)this._dam).SetUserParameter(dr[1].ToString(), dr[2].ToString());
                    }
                    else
                    {
                        //通常のパラメタ

                        if (dr[3].ToString() == PubLiteral.VALUE_STR_NULL)
                        {
                            // nullを指定
                            ((BaseDam)this._dam).SetParameter(dr[1].ToString(), null);
                        }
                        else
                        {
                            // null以外の値を指定

                            if ((this._dam.GetType() == typeof(DamOraOdp))
                                & (0 < (int)this.nudNumOfBind.Value) // 2009/09/18-この行
                                & (dr[2].GetType().ToString().IndexOf("[]") != -1)) // 2009/08/12-この行
                            {
                                // ODP.NETの配列バインドの場合

                                // ・ODP.NETで実行されている。
                                // ・配列バインド数が0より大きい値に設定されている。
                                // ・パラメタに配列が指定されている。

                                // ArrayBindCountプロパティを指定
                                ((DamOraOdp)this._dam).ArrayBindCount = (int)this.nudNumOfBind.Value;

                                // 型情報を取得(ODP.NETの配列バインドでは必須のため)
                                object dbTypeInfo = null;

                                // 推論ロジックで推論できない型の場合は、nullが指定される。
                                this.InferODPType(((Array)dr[2]).GetValue(0).GetType(), out dbTypeInfo);

                                // 配列バインド(型情報が必要)
                                ((BaseDam)this._dam).SetParameter(dr[1].ToString(), dr[2], dbTypeInfo);
                            }
                            //else if ((this._dam.GetType() == typeof(DamHiRDB))
                            //    & (0 < (int)this.nudNumOfBind.Value)
                            //    & (dr[2].GetType().ToString().IndexOf("[]") != -1))
                            //{
                            //    // HiRDBデータプロバイダの配列バインドの場合

                            //    // ・HiRDBデータプロバイダで実行されている。
                            //    // ・配列バインド数が0より大きい値に設定されている。
                            //    // ・パラメタに配列が指定されている。

                            //    // HiRDBデータプロバイダの場合、NonQueryのオーバーロード
                            //    // に配列バインド数を指定するのでフラグを立てておく。
                            //    hrdArryBind = true;

                            //    // 型の推論の有・無
                            //    if (this.cbxType.Checked == true)
                            //    {
                            //        // 型の推論(有)

                            //        // 型情報を取得
                            //        object dbTypeInfo = null;

                            //        // HiRDBデータプロバイダの型情報を推論
                            //        // 推論不明(マニュアル無し)

                            //        // 配列パラメタを設定(型情報・有)
                            //        ((BaseDam)this._dam).SetParameter(dr[1].ToString(), dr[2], dbTypeInfo);
                            //    }
                            //    else
                            //    {
                            //        // 型の推論(無)

                            //        // 配列パラメタを設定(型情報・無)
                            //        ((BaseDam)this._dam).SetParameter(dr[1].ToString(), dr[2]);
                            //    }
                            //}
                            else
                            {
                                // 通常の場合

                                // 型の推論の有・無
                                if (this.cbxType.Checked == true)
                                {
                                    // 型の推論(有)

                                    // 型情報を取得
                                    object dbTypeInfo = null;

                                    if (this._dam.GetType() == typeof(DamSqlSvr))
                                    {
                                        // sqlClientの型情報を推論
                                        this.InferSQLType(dr[2].GetType(), out dbTypeInfo);
                                    }
                                    else if (this._dam.GetType() == typeof(DamOLEDB))
                                    {
                                        // OLEDBの型情報を推論
                                        this.InferOLEType(dr[2].GetType(), out dbTypeInfo);
                                    }
                                    else if (this._dam.GetType() == typeof(DamODBC))
                                    {
                                        // ODBCの型情報を推論
                                        this.InferODBType(dr[2].GetType(), out dbTypeInfo);
                                    }
                                    else if (this._dam.GetType() == typeof(DamOraClient))
                                    {
                                        // Oracle Clientの型情報を推論
                                        this.InferORAType(dr[2].GetType(), out dbTypeInfo);
                                    }

                                    else if (this._dam.GetType() == typeof(DamOraOdp))
                                    {
                                        // ODP.NETの型情報を推論
                                        this.InferODPType(dr[2].GetType(), out dbTypeInfo);
                                    }
                                    else if (this._dam.GetType() == typeof(DamDB2))
                                    {
                                        // DB2.NETの型情報を推論
                                        this.InferDB2Type(dr[2].GetType(), out dbTypeInfo);
                                    }
                                    // HiRDBデータプロバイダ、MySQL Connector/NET、PostgreSQL Npgsql
                                    // については、推論不明(マニュアル無し)。推論非対応。

                                    // パラメタを設定(型情報・有)
                                    ((BaseDam)this._dam).SetParameter(dr[1].ToString(), dr[2], dbTypeInfo);
                                }
                                else
                                {
                                    // 型の推論(無)

                                    // パラメタを設定(型情報・無)
                                    ((BaseDam)this._dam).SetParameter(dr[1].ToString(), dr[2]);
                                }
                            }
                        }
                    }
                }

                #endregion

                // 2009/09/25-start

                // 性能測定-開始
                prfRec = new PerformanceRecorder();
                prfRec.StartsPerformanceRecord();

                // 2009/09/25-end

                if (this.cmbSelTxCtrl.SelectedItem.ToString() == Literal.COMMIT_MODE_AUTO)
                {
                    // トランザクションの開始
                    ((BaseDam)this._dam).BeginTransaction(this.SelectIso());
                }

                #region SQLの実行

                // 検索
                DataSet ds = new DataSet();

                if (this.cmbSelMethod.SelectedItem.ToString() == Literal.METHOD_DATA_TABLE)
                {
                    // DataTable

                    // DataTableを生成
                    DataTable dt = new DataTable();

                    // Select
                    ((BaseDam)this._dam).ExecSelectFill_DT(dt);

                    // DataSetに追加
                    ds.Tables.Add(dt);
                }
                else if (this.cmbSelMethod.SelectedItem.ToString() == Literal.METHOD_DATA_SET)
                {
                    // DataSet

                    // Select
                    ((BaseDam)this._dam).ExecSelectFill_DS(ds);

                    // DataTableが無い場合
                    if (ds.Tables.Count == 0)
                    {
                        // DataTableを生成
                        ds.Tables.Add(new DataTable());
                    }
                }
                else if (this.cmbSelMethod.SelectedItem.ToString() == Literal.METHOD_SCALAR)
                {
                    // Scalar

                    // DataTableを生成
                    DataTable dt = new DataTable();

                    // Select
                    object obj = ((BaseDam)this._dam).ExecSelectScalar();

                    // DataTableに設定する。
                    dt.Columns.Add("Scalar");
                    DataRow dr = dt.NewRow();
                    dr["Scalar"] = obj;
                    dt.Rows.Add(dr);

                    // DataSetに追加
                    ds.Tables.Add(dt);
                }
                else if (this.cmbSelMethod.SelectedItem.ToString() == Literal.METHOD_NON_QUERY)
                {
                    // NonQuery

                    // DataTableを生成
                    DataTable dt = new DataTable();

                    // insert、update、delete
                    int i = 0;

                    //if (hrdArryBind)
                    //{
                    //    // HiRDBの配列バインドの場合
                    //    i = ((DamHiRDB)this._dam).ExecInsUpDel_NonQuery((int)this.nudNumOfBind.Value);
                    //}
                    //else
                    //{
                    // HiRDBの配列バインドでない場合
                    i = ((BaseDam)this._dam).ExecInsUpDel_NonQuery();
                    //}

                    // DataTableに設定する。
                    dt.Columns.Add("Number of effect");
                    DataRow dr = dt.NewRow();
                    dr["Number of effect"] = i;
                    dt.Rows.Add(dr);

                    // DataSetに追加
                    ds.Tables.Add(dt);
                }
                else
                {
                    // ありえん
                }

                #endregion

                if (this.cmbSelTxCtrl.SelectedItem.ToString() == Literal.COMMIT_MODE_AUTO)
                {
                    // トランザクションのコミット
                    ((BaseDam)this._dam).CommitTransaction();
                }

                // 2009/09/25-start

                // 性能情報を出力
                log += this.RM_GetString("PerformanceExecution") + "\r\n";

                log += prfRec.EndsPerformanceRecord() + "\r\n\r\n";

                // 2009/09/25-end

                #region SQLの実行(DataReader独自)

                // DataReaderの場合は、トランザクションをコミットしてから
                if (this.cmbSelMethod.SelectedItem.ToString() == Literal.METHOD_DATA_READER)
                {
                    // DataReader

                    // Select
                    IDataReader idr = (IDataReader)((BaseDam)this._dam).ExecSelect_DR();

                    // DataTableのスキーマを取得
                    DataTable dtSchema = idr.GetSchemaTable();

                    // スキーマからDataTableを作成
                    DataTable dt = new DataTable();

                    if (dtSchema != null)
                    {
                        // スキーマあり(参照系のSQLでは、こちらになる)

                        foreach (DataRow drSchema in dtSchema.Rows)
                        {
                            dt.Columns.Add(drSchema[0].ToString());
                        }

                        // DataReaderからDataTableにデータを移動
                        while (idr.Read())
                        {
                            // DataRowに設定する。
                            DataRow dr = dt.NewRow();
                            foreach (DataColumn dc in dt.Columns)
                            {
                                dr[dc] = idr[dc.ColumnName];
                            }

                            // DataTableに設定する。
                            dt.Rows.Add(dr);
                        }
                    }
                    else
                    {
                        // スキーマなし(更新系のSQLでは、こちらになる)
                    }

                    // 終了したらクローズ
                    idr.Close();

                    // DataSetに追加
                    ds.Tables.Add(dt);

                    //// マニュアルの場合はコミット or ロールバックが必要
                    //if (this.cmbSelTxCtrl.SelectedItem.ToString() == Literal.COMMIT_MODE_MANUAL)
                    //{
                    //    // MANUALの場合

                    //    // トランザクションをコミットするかを選択可能とする。
                    //    DialogResult dlgRet = MessageBox.Show(
                    //        "トランザクションをコミットします。",
                    //        "DataReaderの場合", MessageBoxButtons.YesNo);

                    //    if (dlgRet == DialogResult.Yes)
                    //    {
                    //        // トランザクションのコミット
                    //        //((BaseDam)this._dam).CommitTransaction();
                    //        this.btnCommitTx_Click(sender, e);

                    //        // メッセージを表示する
                    //        MessageBox.Show(Literal.MSG_TRANSACTION_COMMITED);
                    //    }
                    //    else if (dlgRet == DialogResult.No)
                    //    {
                    //        // トランザクションのロールバック
                    //        //((BaseDam)this._dam).RollbackTransaction();
                    //        this.btnRollbackTx_Click(sender, e);

                    //        // メッセージを表示する
                    //        MessageBox.Show(Literal.MSG_TRANSACTION_ROLLBACKED);
                    //    }
                    //    else
                    //    {
                    //        // ありえん
                    //    }
                    //}
                }

                #endregion

                #region 結果表示(正常時)

                // 2009/09/16-start

                // 【SQL】タブ

                // 実行したSQLを取得
                sql = ((BaseDam)this._dam).GetCurrentQuery();

                // 【LOG】タブ

                // ログ出力されるSQLを出力
                log += this.RM_GetString("LogOutputText") + "\r\n";

                log += ((BaseDam)this._dam).GetCurrentQueryForLog();

                // 2009/09/16-end

                // 取得した結果セットを表示
                foreach (DataTable dt in ds.Tables)
                {
                    Form2 viw = new Form2();

                    // プロパティを設定
                    viw._dt = dt;
                    viw._sql = sql;
                    viw._log = log;

                    // 表示位置
                    viw.StartPosition = FormStartPosition.CenterParent;

                    // 表示
                    viw.Show(this);
                }

                #endregion
            }
            catch (Exception Ex)
            {
                if (this.cmbSelTxCtrl.SelectedItem.ToString() == Literal.COMMIT_MODE_AUTO)
                {
                    // トランザクションのロールバック
                    ((BaseDam)this._dam).RollbackTransaction();
                }

                #region 結果表示(異常時)

                // メッセージを表示する
                MessageBox.Show(Ex.Message);

                // 一応結果を表示

                // 2009/09/16-start

                // 【SQL】タブ

                // 実行したSQLを取得
                sql = ((BaseDam)this._dam).GetCurrentQuery();

                // 【LOG】タブ

                // ログ出力されるSQLを出力
                log += this.RM_GetString("LogOutputText") + "\r\n";

                log += ((BaseDam)this._dam).GetCurrentQueryForLog();

                // 2009/09/16-end

                // エラーとなったSQLを表示
                Form2 viw = new Form2();

                // プロパティを設定
                viw._dt = new DataTable();
                viw._sql = sql;
                viw._log = log;

                // 表示位置
                viw.StartPosition = FormStartPosition.CenterParent;

                // 表示
                viw.Show(this);

                #endregion
            }
            finally
            {
                // 実行中はトランザクションの制御方式を変更できないようにする。
                this.groupBoxTx.Enabled = true;

                // クエリ実行完了
                ((ToolStripStatusLabel)this.statBar.Items[0]).Text = this.RM_GetString("STATUS_QUERY_EXECED");

            }
        }
Beispiel #10
0
        /// <summary>
        /// ⑥ ページの実行を開始する直前に発生
        /// </summary>
        void Application_OnPreRequestHandlerExecute(object sender, EventArgs e)
        {
            // ------------
            // メッセージ部
            // ------------
            // ユーザ名, IPアドレス, レイヤ, 
            // 画面名, コントロール名, メソッド名, 処理名
            // ------------
            string strLogMessage =
                "," + "-" +
                "," + Request.UserHostAddress +
                "," + "-----↓" +
                "," + "Global.asax" +
                "," + "Application_OnPreRequest";

            // Log4Netへログ出力
            LogIF.DebugLog("ACCESS", strLogMessage);

            // -------------------------------------------------------------

            // 性能測定開始
            this.perfRec = new PerformanceRecorder();
            this.perfRec.StartsPerformanceRecord();
        }
Beispiel #11
0
        /// <summary>例外処理</summary>
        protected override void UOC_ABEND(Exception ex)
        {
            // 性能測定終了

            // イベント処理開始前にエラーが発生した場合は、
            // this.perfRecがnullの場合があるので、null対策コードを挿入する。
            if (this.perfRec == null)
            {
                // nullの場合、新しいインスタンスを生成し、性能測定開始。
                this.perfRec = new PerformanceRecorder();
                perfRec.StartsPerformanceRecord();
            }

            this.perfRec.EndsPerformanceRecord();

            // ACCESSログ出力-----------------------------------------------

            if (MyBaseAsyncFunc.CanOutPutLog)
            {
                // ------------
                // メッセージ部
                // ------------
                // ユーザ名, レイヤ, 画面名, コントロール名,
                // 処理時間(実行時間), 処理時間(CPU時間)
                // エラーメッセージ等
                // ------------
                string strLogMessage =
                    "," + "-" +
                    "," + "*-----" +
                    "," + this.UIElementName +
                    "," + this.AsyncFunc.Method.Name +
                    "," + this.perfRec.ExecTime +
                    "," + this.perfRec.CpuTime +
                    "," + ex.Message;

                // Log4Netへログ出力
                LogIF.WarnLog("ACCESS", strLogMessage);
            }

            // -------------------------------------------------------------    
        }
Beispiel #12
0
 /// <summary>SQL実行開始処理を実装する共通UOCメソッド</summary>
 /// <remarks>業務コード親クラス1から利用される派生の末端</remarks>
 protected override void UOC_PreQuery()
 {
     // 性能測定開始
     this.perfRec = new PerformanceRecorder();
     this.perfRec.StartsPerformanceRecord();
 }
Beispiel #13
0
        /// <summary>一般的な例外発生時の処理を実装</summary>
        /// <param name="ex">例外オブジェクト</param>
        /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>画面コード親クラス1から利用される派生の末端</remarks>
        protected override void UOC_ABEND(Exception ex, FxEventArgs fxEventArgs)
        {
            // 一般的な例外発生時の処理を実装
            // TODO:

            // 性能測定終了

            // イベント処理開始前にエラーが発生した場合は、
            // this.perfRecがnullの場合があるので、null対策コードを挿入する。
            if (this.perfRec == null)
            {
                // nullの場合、新しいインスタンスを生成し、性能測定開始。
                this.perfRec = new PerformanceRecorder();
                perfRec.StartsPerformanceRecord();
            }

            this.perfRec.EndsPerformanceRecord();

            // 認証ユーザ情報を取得する ------------------------------------
            this.GetUserInfo();

            // ACCESSログ出力-----------------------------------------------

            // ------------
            // メッセージ部
            // ------------
            // ユーザ名, IPアドレス,
            // レイヤ, 画面名, コントロール名, 処理名
            // 処理時間(実行時間), 処理時間(CPU時間)
            // エラーメッセージID, エラーメッセージ等
            // ------------
            string strLogMessage =
                "," + UserInfo.UserName +
                "," + Request.UserHostAddress +
                "," + "<-----" +
                "," + this.ContentPageFileNoEx +
                "," + fxEventArgs.ButtonID +
                "," + "" +
                "," + this.perfRec.ExecTime +
                "," + this.perfRec.CpuTime +
                "," + "other Exception" +
                "," + ex.Message + "\r\n";
            // OriginalStackTrace(ログ出力)の品質向上
            if (this.OriginalStackTrace == "")
            {
                strLogMessage += ex.StackTrace;
            }
            else
            {
                strLogMessage += this.OriginalStackTrace;
            }

            // Log4Netへログ出力
            LogIF.ErrorLog("ACCESS", strLogMessage);

            // -------------------------------------------------------------

            // エラー画面に画面遷移する ------------------------------------
            this.TransferErrorScreen(ex);
            // -------------------------------------------------------------
        }
Beispiel #14
0
        /// <summary>業務例外発生時の処理を実装</summary>
        /// <param name="baEx">BusinessApplicationException</param>
        /// <param name="fxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>画面コード親クラス1から利用される派生の末端</remarks>
        protected override void UOC_ABEND(BusinessApplicationException baEx, FxEventArgs fxEventArgs)
        {
            // 業務例外発生時の処理を実装
            // TODO:

            // ここに、メッセージの組み立てロジックを実装する。

            // メッセージ編集処理 ------------------------------------------

            string messageID = baEx.messageID;
            string messageDescription = "";

            // メッセージIDから、対応するメッセージを取得する。
            messageDescription = GetMessage.GetMessageDescription(messageID);
            if (messageDescription == "")
            {
                // メッセージが取得できなかった場合
                messageDescription = baEx.Message;
            }
            else
            {
                // メッセージが取得できた場合、
                // 必要なら、メッセージに、可変文字列を組み込む。

                // 方式は、プロジェクト毎に検討のこと。
                messageDescription = messageDescription.Replace("%1", baEx.Message);
                messageDescription = messageDescription.Replace("%2", baEx.Information);
            }

            // -------------------------------------------------------------

            // メッセージ表示処理 ------------------------------------------

            #region メッセージボックスを使用して表示する場合。

            // 「OK」メッセージダイアログの表示処理
            this.ShowOKMessageDialog(
                messageID, messageDescription,
                FxEnum.IconType.Exclamation,
                "BusinessApplicationExceptionを使用したダイアログ表示");

            #endregion

            #region マスタ ページ上のラベルに表示する場合。

            //// 結果表示するメッセージ エリア
            //Label label = (Label)this.GetMasterWebControl("Label1");
            //label.Text = "";

            //// 結果(業務続行可能なエラー)
            //label.Text = "ErrorMessageID:" + baEx.messageID + "\r\n";
            //label.Text += "ErrorMessage:" + baEx.Message + "\r\n";
            //label.Text += "ErrorInfo:" + baEx.Information + "\r\n";

            #endregion

            // -------------------------------------------------------------

            // 性能測定終了

            // イベント処理開始前にエラーが発生した場合は、
            // this.perfRecがnullの場合があるので、null対策コードを挿入する。
            if (this.perfRec == null)
            {
                // nullの場合、新しいインスタンスを生成し、性能測定開始。
                this.perfRec = new PerformanceRecorder();
                perfRec.StartsPerformanceRecord();
            }

            this.perfRec.EndsPerformanceRecord();

            // 認証ユーザ情報を取得する ------------------------------------
            this.GetUserInfo();

            // ACCESSログ出力-----------------------------------------------

            // ------------
            // メッセージ部
            // ------------
            // ユーザ名, IPアドレス,
            // レイヤ, 画面名, コントロール名, 処理名
            // 処理時間(実行時間), 処理時間(CPU時間)
            // エラーメッセージID, エラーメッセージ等
            // ------------
            string strLogMessage =
                "," + UserInfo.UserName +
                "," + Request.UserHostAddress +
                "," + "<-----" +
                "," + this.ContentPageFileNoEx +
                "," + fxEventArgs.ButtonID +
                "," + "" +
                "," + this.perfRec.ExecTime +
                "," + this.perfRec.CpuTime +
                "," + baEx.messageID +
                "," + baEx.Message;

            // Log4Netへログ出力
            LogIF.WarnLog("ACCESS", strLogMessage);

            // -------------------------------------------------------------
        }
Beispiel #15
0
        /// <summary>
        /// 動的パラメタライズド クエリを
        /// 通常のパラメタライズド クエリに変換するメソッド
        /// </summary>
        /// <param name="paramSign">パラメタの先頭記号(DBMSによって可変)</param>
        /// <returns>変換後の通常のパラメタライズド クエリ</returns>
        /// <remarks>派生のDamXXXから利用する。</remarks>
        protected string Convert(char paramSign)
        {

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            PerformanceRecorder perfRec = null;
#endif

            #region 変換処理

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            perfRec = new PerformanceRecorder();
            perfRec.StartsPerformanceRecord();
            Debug.WriteLine("ReplaceVALTag(開始)");
#endif

            // VALタグを対応する値で置換する。
            this.ReplaceVALTag();

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            Debug.WriteLine("ReplaceVALTag(終了):" + perfRec.EndsPerformanceRecord());
#endif

//#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
//            perfRec = new PerformanceRecorder();
//            perfRec.StartsPerformanceRecord();
//            Debug.WriteLine("ProcessJOINTag(開始)");
//#endif

//            // JOINタグを処理する。
//            this.ProcessJOINTag();

//#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
//            Debug.WriteLine("ProcessJOINTag(終了):" + perfRec.EndsPerformanceRecord());
//#endif

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            perfRec = new PerformanceRecorder();
            perfRec.StartsPerformanceRecord();
            Debug.WriteLine("ProcessINSCOLTag(開始)");
#endif

            // 2008/12/25---新機能の追加(ここから)
            // INSCOLタグを処理する。
            this.ProcessINSCOLTag();
            // 2008/12/25---新機能の追加(ここまで)

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            Debug.WriteLine("ProcessINSCOLTag(終了):" + perfRec.EndsPerformanceRecord());
#endif

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            perfRec = new PerformanceRecorder();
            perfRec.StartsPerformanceRecord();
            Debug.WriteLine("ProcessIFTag(開始)");
#endif

            // IFタグを処理する。
            this.ProcessIFTag(paramSign);

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            Debug.WriteLine("ProcessIFTag(終了):" + perfRec.EndsPerformanceRecord());
#endif

#if PERFORMANCE_LOG_SWITCH
            perfRec = new PerformanceRecorder();
            perfRec.StartsPerformanceRecord();
            Debug.WriteLine("ProcessSelectCaseDefaultTag(開始)");
#endif
            // 2010/09/24---新機能の追加(ここから)
            // SELECT-CASE-DEFAULTタグを処理する。
            this.ProcessSelectCaseDefaultTag();
            // 2010/09/24---新機能の追加(ここまで)

#if PERFORMANCE_LOG_SWITCH
            Debug.WriteLine("ProcessSelectCaseDefaultTag(終了):" + perfRec.EndsPerformanceRecord());
#endif

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            perfRec = new PerformanceRecorder();
            perfRec.StartsPerformanceRecord();
            Debug.WriteLine("ProcessLISTTag(開始)");
#endif

            // LISTタグを処理する。
            this.ProcessLISTTag(paramSign);

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            Debug.WriteLine("ProcessLISTTag(終了):" + perfRec.EndsPerformanceRecord());
#endif

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            perfRec = new PerformanceRecorder();
            perfRec.StartsPerformanceRecord();
            Debug.WriteLine("ProcessJoinSubWhereTag(開始)");
#endif

            // JOIN、SUB、WHEREタグを処理する。
            this.ProcessJoinSubWhereTag(); // 2010/09/24---JOINタグのネスト条件緩和

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            Debug.WriteLine("ProcessJoinSubWhereTag(終了):" + perfRec.EndsPerformanceRecord());
#endif

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            perfRec = new PerformanceRecorder();
            perfRec.StartsPerformanceRecord();
            Debug.WriteLine("ProcessDELCMATag(開始)");
#endif

            // 2008/12/24---新機能の追加(ここから)
            // DELCMAタグを処理する。
            this.ProcessDELCMATag();
            // 2008/12/24---新機能の追加(ここまで)

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            Debug.WriteLine("ProcessDELCMATag(終了):" + perfRec.EndsPerformanceRecord());
#endif

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            perfRec = new PerformanceRecorder();
            perfRec.StartsPerformanceRecord();
            Debug.WriteLine("DeleteParamTag(開始)");
#endif

            // 実行に不要なPARAMタグを消去する。
            this.DeleteParamTag();

#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ
            Debug.WriteLine("DeleteParamTag(終了):" + perfRec.EndsPerformanceRecord());
#endif

            #endregion

            // 戻す
            return this._xml.InnerText;
        } 
Beispiel #16
0
        /// <summary>フレームワークの対象コントロールイベントの開始処理を実装</summary>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>画面コード親クラス1から利用される派生の末端</remarks>
        protected override void UOC_PreAction(RcFxEventArgs rcFxEventArgs)
        {
            // フレームワークの対象コントロールイベントの開始処理を実装する
            // TODO:

            // 権限チェック ------------------------------------------------
            // -------------------------------------------------------------

            // 閉塞チェック ------------------------------------------------
            // -------------------------------------------------------------

            // ACCESSログ出力 ----------------------------------------------

            if (MyBaseControllerWin.CanOutPutLog)
            {
                // ------------
                // メッセージ部
                // ------------
                // ユーザ名, レイヤ, 画面名, コントロール名,
                // 処理時間(実行時間), 処理時間(CPU時間)
                // エラーメッセージID, エラーメッセージ等
                // ------------
                string strLogMessage =
                    "," + UserInfo.UserName +
                    "," + "----->" +
                    "," + this.Name +
                    "," + rcFxEventArgs.ControlName;

                // Log4Netへログ出力
                LogIF.InfoLog("ACCESS", strLogMessage);
            }

            // -------------------------------------------------------------

            // 性能測定開始
            this.perfRec = new PerformanceRecorder();
            this.perfRec.StartsPerformanceRecord();
        }
Beispiel #17
0
        /// <summary>
        /// B層の開始処理を実装
        /// </summary>
        /// <param name="parameterValue">引数クラス</param>
        /// <remarks>業務コード親クラス1から利用される派生の末端</remarks>
        protected override void UOC_PreAction(BaseParameterValue parameterValue)
        {
            // ACCESSログ出力-----------------------------------------------

            MyParameterValue myPV = (MyParameterValue)parameterValue;

            // ------------
            // メッセージ部
            // ------------
            // ユーザ名, IPアドレス, レイヤ, 
            // 画面名, コントロール名, メソッド名, 処理名
            // ------------
            string strLogMessage =
                "," + myPV.User.UserName +
                "," + myPV.User.IPAddress +
                "," + "----->>" +
                "," + myPV.ScreenId +
                "," + myPV.ControlId +
                "," + myPV.MethodName +
                "," + myPV.ActionType;

            // Log4Netへログ出力
            LogIF.InfoLog("ACCESS", strLogMessage);

            // -------------------------------------------------------------

            // 性能測定開始
            this.perfRec = new PerformanceRecorder();
            this.perfRec.StartsPerformanceRecord();

        }
 public void Initialize()
 {
     //New instance of Performance Recorder
     _performanceRecorder = new PerformanceRecorder();
 }