VB6開発者向け:C#で始める.NETプログラミング

第5回 C#のコードに移植する

この記事を読むのに必要な時間:およそ 11 分

前ページより

        //*************************************************************
        /// <summary>読込み処理を実行します</summary>
        /// <returns>結果 [True:成功 / False:失敗]</returns>
        //*************************************************************
        private bool ReadLogic()
        {
            object[] record = ReadRecord(Code);
            if (record == null)
            {
                MessageBox.Show("登録されていませんでした");
                return false;
            }
            else {
                nameTextBox.Text = record[1].ToString();
                telephoneNumberTextBox.Text = record[2].ToString();
                return true;
            }
        }

        //*************************************************************
        /// <summary>番号値が有効かどうかを検証した結果を取得します
        /// </summary>
        /// <param name="Value">番号の値</param>
        /// <returns>結果 [True:無効 / False:有効]</returns>
        //*************************************************************
        private bool InvalidCode(int Value)
        {
            if (Value <= 0 | Value >= 100000000)
            {
                MessageBox.Show("番号の値が不正です");
                return true;
            }
            else
            {
                return false;
            }
        }

        //*************************************************************
        /// <summary>レコードを追加します</summary>
        /// <param name="code">番号</param>
        /// <returns>結果 [True:成功 / False:失敗]</returns>
        //*************************************************************
        private bool AddRecord(int code)
        {
            string sqlText = GetAddSqlText(code);
            return ExecuteQuery(sqlText);
        }

        //*************************************************************
        /// <summary>レコードを更新します</summary>
        /// <param name="code">番号</param>
        /// <param name="nameValue">名前</param>
        /// <param name="telephoneNumber">電話番号</param>
        /// <returns>結果 [True:成功 / False:失敗]</returns>
        //*************************************************************
        private bool UpdateRecord(
            int code, string nameValue, string telephoneNumber)
        {
            string sqlText = GetUpdateSqlText(
                code, nameValue, telephoneNumber);
            return ExecuteQuery(sqlText);
        }

        //*************************************************************
        /// <summary>レコードを削除します</summary>
        /// <param name="code">番号</param>
        /// <returns>結果 [True:成功 / False:失敗]</returns>
        //*************************************************************
        private bool DeleteRecord(int code)
        {
            string sqlText = GetDeleteSqlText(code);
            return ExecuteQuery(sqlText);
        }

        //*************************************************************
        // レコードを読み込みます
        // Code:     番号
        // Returns:  RecordSet オブジェクト
        //*************************************************************
        private object[] ReadRecord(int code)
        {
            OleDbCommand cd = new OleDbCommand();
            OleDbDataReader dr = null;
            try
            {
                cd.Connection = dbConnection;
                cd.CommandType = CommandType.Text;
                cd.CommandText = GetSelectSqlText(code);
                dr = cd.ExecuteReader();
                if (dr.Read()) {
                    object[] r = new object[dr.FieldCount];
                    for(int i = 0; i < r.Length; ++i) 
                    {
                        r[i] = dr.GetValue(i);
                    }
                    return r;
                }
                return null;
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
                return null;
            }
            finally
            {
                if (dr != null) {
                    dr.Close();
                    dr.Dispose();
                }
                cd.Dispose();
            }
        }

        //*************************************************************
        // 各 SQL 文字列を取得します
        // Code:     番号
        // Returns:  SQL 文字列
        //*************************************************************
        private string GetSelectSqlText(int code)
        {
            string s = code.ToString();
            return "SELECT * FROM MyTable WHERE 番号 = " + s;
        }

        private string GetAddSqlText(int code)
        {
            return
                "INSERT INTO MyTable(番号, 名前, 電話番号) VALUES(" +
                code.ToString() + ", '' , '')";
        }

        private string GetUpdateSqlText(
            int code, string nameValue, string telephoneNumber)
        {
            return
                "UPDATE MyTable " +
                "Set " +
                    "名前 = '" + nameValue + "', " +
                    "電話番号 = '" + telephoneNumber + "' " +
                "WHERE 番号 = " + code.ToString();
        }

        private string GetDeleteSqlText(int code)
        {
            string s = code.ToString();
            return "DELETE * FROM MyTable WHERE 番号 = " + s;
        }

        //*************************************************************
        /// <summary>クエリーを実行します</summary>
        /// <param name="sqlText">実行したい SQL 文字列</param>
        /// <returns>結果 [True:成功 / False:失敗]</returns>
        //*************************************************************
        private bool ExecuteQuery(string sqlText)
        {
            OleDbCommand cd = new OleDbCommand();
            try {
                cd.Connection = dbConnection;
                cd.CommandType = CommandType.Text;
                cd.CommandText = sqlText;
                cd.ExecuteNonQuery();
                return true;
            }
            catch(Exception ex) {
                MessageBox.Show(ex.Message);
                return false;
            }
            finally{
                cd.Dispose();
            }
        }

        //*************************************************************
        /// <summary>データベースへの接続を開始します</summary>
        //*************************************************************
        private void ConnectDatabase()
        {
            dbConnection = new OleDbConnection();
            dbConnection.ConnectionString = 
                "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
                FILENAME;
            dbConnection.Open();
        }

        //*************************************************************
        /// <summary>データベースの接続を終了します</summary>
        //*************************************************************
        private void CloseDatabase()
        {
            dbConnection.Close();
            dbConnection.Dispose();
        }
    }
}

著者プロフィール

伊藤達也(いとうたつや)

(株)井沢電器設備にて、業務管理システムの開発に従事しています。 この記事の趣旨通り、筆者自身が2005年後半にメインの開発言語をVB6からC#に移行し、2007年には Microsoft MVPアワードをC#で受賞しました。