Example #1
0
        /// <summary>
        /// 先頭行のvalueフィールドの値を取得
        /// </summary>
        /// <typeparam name="T">valueフィールドの型</typeparam>
        /// <param name="conn"></param>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static T GetFirstValue <T>(NpgsqlConnection conn, string sql, string fieldName = "value")
        {
            T result                      = default(T); //  null
            NpgsqlDataReader dr           = null;
            string           errorMessage = null;

            //  DBエラーリセット
            CommonUtil.SetLastDBError(0);


            NpgsqlCommand cmd = null;

            try
            {
                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }
                cmd = new NpgsqlCommand(sql, conn);

                dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    dr.Read();
                    int index = dr.GetOrdinal(fieldName);
                    if (dr.IsDBNull(index))
                    {
                    }
                    else
                    {
                        result = (T)dr[index];
                    }
                }
            }
            catch (Exception ex)
            {   //DBアクセスエラー
                // エラーログ出力
                errorMessage = ex.Message.ToString();
                CiLog cErrlog = new CiLog();    // ログ出力クラス
                cErrlog.WriteLog(ex.ToString(), ex.StackTrace, System.Diagnostics.EventLogEntryType.Error);
                CommonUtil.SetLastDBError(ex.HResult);
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                }
                if (dr != null)
                {
                    dr.Close();
                }
            }
            if (errorMessage != null)
            {
                conn.Close();
                //                throw new Exception(errorMessage);
            }
            return(result);
        }
Example #2
0
        /// <summary>
        /// テーブルから一行読み込んで、modelクラスのインスタンスにロード
        /// </summary>
        /// <typeparam name="T">modelクラス(BaseModelの派生クラス)</typeparam>
        /// <param name="conn">DBへの接続インスタンス</param>
        /// <param name="sql">SQL文</param>
        /// <returns>modelクラスのインスタンス</returns>
        public static T GetFirst <T>(NpgsqlConnection conn, string sql) where T : BaseModel, new()
        {
            T model                       = null;
            NpgsqlDataReader dr           = null;
            string           errorMessage = null;

            //  DBエラーリセット
            CommonUtil.SetLastDBError(0);


            NpgsqlCommand cmd = null;

            try
            {
                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }
                cmd = new NpgsqlCommand(sql, conn);

                dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    dr.Read();
                    // 最初の1レコードをメンバー変数に読み込む
                    model = new T();
                    model.LoadProp(dr);
                }
                else
                {
                    model = null;
                }
            }
            catch (Exception ex)
            {   //DBアクセスエラー
                // エラーログ出力
                errorMessage = ex.Message.ToString();
                CiLog cErrlog = new CiLog();    // ログ出力クラス
                cErrlog.WriteLog(ex.ToString(), ex.StackTrace, System.Diagnostics.EventLogEntryType.Error);
                CommonUtil.SetLastDBError(ex.HResult);
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                }
                if (dr != null)
                {
                    dr.Close();
                }
            }
            if (errorMessage != null)
            {
                conn.Close();
//                throw new Exception(errorMessage);
            }
            return(model);
        }
Example #3
0
        /// <summary>
        /// テーブルから複数行読み込んで、modelクラスインスタンスの配列にロード
        /// </summary>
        /// <typeparam name="T">modelクラス(BaseModelの派生クラス)</typeparam>
        /// <param name="conn">DBへの接続インスタンス</param>
        /// <param name="sql">SQL文</param>
        /// <param name="count">インスタンス数。省略時は行の終わりまで</param>
        /// <returns>modelクラスのインスタンス</returns>
        public static T[] GetRows <T>(NpgsqlConnection conn, string sql, int count = int.MaxValue) where T : BaseModel, new()
        {
            List <T> Models = new List <T>();

            //  DBエラーリセット
            CommonUtil.SetLastDBError(0);

            string errorMessage = null;

            NpgsqlCommand    cmd = null;
            NpgsqlDataReader dr  = null;

            try
            {
                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }
                cmd = new NpgsqlCommand(sql, conn);
                dr  = cmd.ExecuteReader();
                for (int i = 0; dr.Read() && (i < count); i++)
                {
                    T model = new T();
                    model.LoadProp(dr);
                    Models.Add(model);
                }
            }
            catch (Exception ex)
            {   //DBアクセスエラー
                // エラーログ出力
                errorMessage = ex.Message.ToString();
                CiLog cErrlog = new CiLog();    // ログ出力クラス
                cErrlog.WriteLog(ex.ToString(), ex.StackTrace, System.Diagnostics.EventLogEntryType.Error);
                CommonUtil.SetLastDBError(ex.HResult);
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                }
                if (dr != null)
                {
                    dr.Close();
                }
            }
            if (errorMessage != null)
            {
                conn.Close();
//                throw new Exception(errorMessage);
            }
            return(Models.ToArray());
        }
Example #4
0
        /// <summary>
        /// 最初のDB読み込み
        /// </summary>
        public int InitialRead()
        {
            int ret = 0;

            try
            {
                conn.Open();
            }
            catch (Exception ex)
            {
                // エラーログ出力
                cErrlog.WriteLog(ex.ToString(), ex.StackTrace, System.Diagnostics.EventLogEntryType.Error);
                return(1);
            }
            //システム定義読み込み
            LoadSysMainTbl();



            return(ret);
        }
Example #5
0
        /// <summary>
        /// DBから初期情報をロード
        /// </summary>
        private bool Load_db()
        {
            int ret = 0;

            try
            {
                //設定ファイルの有無チェック
                string configfile = System.Reflection.Assembly.GetExecutingAssembly().Location + ".config";
                if (System.IO.File.Exists(configfile) == false)
                {
                    CommonUtil.showErrorMessage(string.Format(Mocs.Properties.Resources.ERROR_SETTING_FILE, configfile));
                    return(false);
                }
                int portno = Mocs.Properties.Settings.Default.DB_Port;
                if ((portno > 65535) || (portno < 0))
                {   //設定ファイルエラー
                    CommonUtil.showErrorMessage(string.Format(Mocs.Properties.Resources.ERRPR_SETTING_FILE_DBPORT, portno.ToString()));

                    return(false);
                }
                StringBuilder sb = new StringBuilder(128);
                sb.Append("Server=").Append(Mocs.Properties.Settings.Default.DB_HOST).Append(";Port=").Append(portno.ToString());
                sb.Append(";User Id=").Append(Mocs.Properties.Settings.Default.DB_User).Append(";Password="******";Database=").Append(Mocs.Properties.Settings.Default.DB_Name).Append(";");
                mocs_cell_db = new DBAccess(sb.ToString());
                if ((ret = mocs_cell_db.InitialRead()) > 0)
                {   //DBエラー
                    CommonUtil.showErrorMessage(Mocs.Properties.Resources.ERRPR_CONNECT_DB);
                    return(false);
                }

                //  ステータステーブルを初期化
                CellStatus.InitTable(this.mocs_cell_db.Conn);
            }
            catch (Exception ex)
            {
                // エラーログ出力
                cErrlog.WriteLog(ex.ToString(), ex.StackTrace, System.Diagnostics.EventLogEntryType.Error);

                MessageBox.Show(string.Format(Mocs.Properties.Resources.ERROR_EXCEPTION, ex.ToString()));
                return(false);
            }
            return(true);
        }
Example #6
0
        /// <summary>
        /// Cell監視処理
        /// Timerにより一定間隔で呼び出される
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TimerFunc(object sender, EventArgs e)
        {
            try
            {
                if (m_isFirstUpdate)
                {
                    //  初回実行のとき


                    m_isFirstUpdate = false;

                    //  タイマーを再設定
                    StopTimer();


                    //  2回目からは設定ファイルにしたがって一定間隔で処理する
                    SetupTimer(Int32.Parse(Properties.Settings.Default.Cell_interval));
                }

                if (!m_isInUpdate)
                {
                    m_isInUpdate = true;
                    Update();
                    m_isInUpdate = false;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());


                CiLog log = new CiLog();    // ログ出力クラス
                // エラーログ出力
                log.WriteLog(ex.ToString(), ex.StackTrace, System.Diagnostics.EventLogEntryType.Error);


                StopTimer();

//                MessageBox.Show(string.Format(Properties.Resources.ERROR_EXCEPTION, ex.ToString()));
            }
        }