Esempio n. 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);
        }
Esempio n. 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);
        }
Esempio n. 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());
        }
Esempio n. 4
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()));
            }
        }