Exemplo n.º 1
0
        public OrderReturnValue GetOrderById(OrderParameterValue orderParameter)
        {
            // 戻り値クラスを作成する
            OrderReturnValue returnValue = new OrderReturnValue();

            // 自動生成した D 層クラスのインスタンスを生成する
            DaoOrders        orderDao        = new DaoOrders(this.Dam);
            DaoOrder_Details orderDetailsDao = new DaoOrder_Details(this.Dam);

            // 注文情報、注文詳細情報を格納するための DataTable
            System.Data.DataTable orderTable        = new System.Data.DataTable();
            System.Data.DataTable orderDetailsTable = new System.Data.DataTable();

            // パラメータを設定する
            orderDao.PK_OrderID        = orderParameter.OrderId;
            orderDetailsDao.PK_OrderID = orderParameter.OrderId;

            // 注文 ID をもとに注文情報を検索する
            orderDao.D2_Select(orderTable);
            orderDetailsDao.D2_Select(orderDetailsTable);

            // 戻り値クラスに結果セットを格納し、B 層クラスに返す
            returnValue.Orders       = DataToPoco.DataTableToList <OrderViweModel>(orderTable);
            returnValue.OrderDetails = DataToPoco.DataTableToList <Order_DetailViweModel>(orderDetailsTable);
            return(returnValue);
        }
        /// <summary>1レコードを返すSELECTクエリを実行する</summary>
        /// <param name="testParameter">引数クラス</param>
        /// <param name="testReturn">戻り値クラス</param>
        public void Select(TestParameterValue testParameter, TestReturnValue testReturn)
        {
            // ↓DBアクセス-----------------------------------------------------

            string filename = "";

            if ((testParameter.ActionType.Split('%'))[2] == "static")
            {
                // 静的SQL
                filename = "ShipperSelect.sql";
            }
            else if ((testParameter.ActionType.Split('%'))[2] == "dynamic")
            {
                // 動的SQL
                filename = "ShipperSelect.xml";
            }

            //   -- ファイルから読み込む場合。
            this.SetSqlByFile2(filename);

            // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
            this.SetParameter("P1", testParameter.Shipper.ShipperID);

            // 戻り値 dt
            DataTable dt = new DataTable();

            //   -- 1レコードを返すSELECTクエリを実行する
            this.ExecSelectFill_DT(dt);

            // ↑DBアクセス-----------------------------------------------------

            // 一部、DataToPocoのテストコード
            ShipperViweModel svm = DataToPoco.DataTableToPOCO <ShipperViweModel>(dt);

            Debug.WriteLine("svm:" + ObjectInspector.Inspect(svm));

            TestShipperViweModel tsvm = DataToPoco.DataTableToPOCO <TestShipperViweModel>(dt,
                                                                                          // mapの書き方は、Key-Valueでdst-srcのproperty field名を書く
                                                                                          new Dictionary <string, string>()
            {
                { "_ShipperID", "ShipperID" },
                { "_CompanyName", "CompanyName" },
                { "_Phone", "Phone" }
            });

            Debug.WriteLine("tsvm:" + ObjectInspector.Inspect(tsvm));

            testReturn.Obj  = svm;
            testReturn.Obj2 = tsvm;
        }
Exemplo n.º 3
0
        public OrderReturnValue GetOrders(OrderParameterValue orderParameter)
        {
            // 戻り値クラスを作成する
            OrderReturnValue returnValue = new OrderReturnValue();

            // 共通 DAO を作成する (SQL ファイルとして、4.5.2 項で作成したファイルを使用する)
            CmnDao dao = new CmnDao(this.Dam);

            dao.SQLFileName = "SelectOrders.sql";

            // DB から注文情報一覧を取得し、戻り値クラスに注文情報一覧を格納し、B 層クラスに返す
            using (IDataReader dr = dao.ExecSelect_DR())
            {
                returnValue.Orders = DataToPoco.DataReaderToList <OrderViweModel>(dr);
            }

            return(returnValue);
        }
        /// <summary>一覧を返すSELECTクエリを実行する(DR)</summary>
        /// <param name="testParameter">引数クラス</param>
        /// <param name="testReturn">戻り値クラス</param>
        public void SelectAll_DR(TestParameterValue testParameter, TestReturnValue testReturn)
        {
            // ↓DBアクセス-----------------------------------------------------

            string commandText = "";

            if ((testParameter.ActionType.Split('%'))[2] == "static")
            {
                // 静的SQL
                commandText = "SELECT * FROM Shippers";
            }
            else if ((testParameter.ActionType.Split('%'))[2] == "dynamic")
            {
                // 動的SQL
                commandText =
                    "<?xml version=\"1.0\" encoding=\"shift_jis\" ?><ROOT>SELECT * FROM Shippers</ROOT>";
                // 通常、動的SQLをSetSqlByCommandで直接指定するような使い方はしない。
            }

            //   -- 直接指定する場合。
            this.SetSqlByCommand(commandText);

            //   -- 一覧を返すSELECTクエリを実行する
            IDataReader idr = (IDataReader)this.ExecSelect_DR();

            // DataReaderToList
            List <ShipperViweModel> list = DataToPoco.DataReaderToList <ShipperViweModel>(idr);

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

            // ↑DBアクセス-----------------------------------------------------

            // 戻り値を設定
            testReturn.Obj = list;
        }
        /// <summary>一覧を返すSELECTクエリを実行する(DS)</summary>
        /// <param name="testParameter">引数クラス</param>
        /// <param name="testReturn">戻り値クラス</param>
        public void SelectAll_DS(TestParameterValue testParameter, TestReturnValue testReturn)
        {
            // ↓DBアクセス-----------------------------------------------------

            string commandText = "";

            if ((testParameter.ActionType.Split('%'))[2] == "static")
            {
                // 静的SQL
                commandText = "SELECT * FROM Shippers";
            }
            else if ((testParameter.ActionType.Split('%'))[2] == "dynamic")
            {
                // 動的SQL
                commandText =
                    "<?xml version=\"1.0\" encoding=\"utf-8\" ?><ROOT>SELECT * FROM Shippers</ROOT>";
                // 通常、動的SQLをSetSqlByCommandで直接指定するような使い方はしない。
            }

            //   -- 直接指定する場合。
            this.SetSqlByCommand(commandText);

            // 戻り値 ds
            DataSet ds = new DataSet();

            //   -- 一覧を返すSELECTクエリを実行する
            this.ExecSelectFill_DS(ds);

            // DataTableToList
            List <ShipperViweModel> list = DataToPoco.DataTableToList <ShipperViweModel>(ds.Tables[0]);

            // ↑DBアクセス-----------------------------------------------------

            // 戻り値を設定
            testReturn.Obj = list;
        }
        /// <summary>一覧を返すSELECTクエリを実行する</summary>
        /// <param name="testParameter">引数クラス</param>
        /// <param name="testReturn">戻り値クラス</param>
        public void SelectAll_DSQL(TestParameterValue testParameter, TestReturnValue testReturn)
        {
            // ↓DBアクセス-----------------------------------------------------

            string filename = "";

            if ((testParameter.ActionType.Split('%'))[2] == "static")
            {
                // 静的SQL
                filename = "ShipperSelectOrder.sql";
            }
            else if ((testParameter.ActionType.Split('%'))[2] == "dynamic")
            {
                // 動的SQL
                filename = "ShipperSelectOrder.xml";
            }

            //   -- ファイルから読み込む場合。
            this.SetSqlByFile2(filename);

            // ユーザ定義パラメタに対して、動的に値を設定する。
            string orderColumn   = "";
            string orderSequence = "";

            if (testParameter.OrderColumn == "c1")
            {
                orderColumn = "ShipperID";
            }
            else if (testParameter.OrderColumn == "c2")
            {
                orderColumn = "CompanyName";
            }
            else if (testParameter.OrderColumn == "c3")
            {
                orderColumn = "Phone";
            }
            else
            {
            }

            if (testParameter.OrderSequence == "A")
            {
                orderSequence = "ASC";
            }
            else if (testParameter.OrderSequence == "D")
            {
                orderSequence = "DESC";
            }
            else
            {
            }

            // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
            this.SetParameter("P1", "test");

            // ユーザ入力は指定しない。
            // ※ 動的SQLのVALタグは、前後の空白をつめることが有るので、
            //    必要であれば、前後の空白を明示的に指定する必要がある。
            this.SetUserParameter("COLUMN", " " + orderColumn + " ");
            this.SetUserParameter("SEQUENCE", " " + orderSequence + " ");

            // 戻り値 dt
            DataTable dt = new DataTable();

            //   -- 一覧を返すSELECTクエリを実行する
            this.ExecSelectFill_DT(dt);
            // DataTableToList
            List <ShipperViweModel> list = DataToPoco.DataTableToList <ShipperViweModel>(dt);

            // ↑DBアクセス-----------------------------------------------------

            // 戻り値を設定
            testReturn.Obj = list;
        }
Exemplo n.º 7
0
        /// <summary>業務処理を実装</summary>
        /// <param name="testParameter">引数クラス</param>
        private void UOC_Select(TestParameterValue testParameter)
        {
            // 戻り値クラスを生成して、事前に戻り値に設定しておく。
            TestReturnValue testReturn = new TestReturnValue();

            this.ReturnValue = testReturn;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = null;

            switch ((testParameter.ActionType.Split('%'))[1])
            {
            case "common":     // 共通Daoを使用する。

                // 共通Daoを生成
                CmnDao cmnDao = new CmnDao(this.GetDam());

                switch ((testParameter.ActionType.Split('%'))[2])
                {
                case "static":
                    // 静的SQLを指定
                    cmnDao.SQLFileName = "ShipperSelect.sql";
                    break;

                case "dynamic":
                    // 動的SQLを指定
                    cmnDao.SQLFileName = "ShipperSelect.xml";
                    break;
                }

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                cmnDao.SetParameter("P1", testParameter.Shipper.ShipperID);

                // 戻り値 dt
                dt = new DataTable();

                // 共通Daoを実行
                cmnDao.ExecSelectFill_DT(dt);

                // DataTableToPOCO
                testReturn.Obj = DataToPoco.DataTableToPOCO <ShipperViweModel>(dt);

                break;

            case "generate":     // 自動生成Daoを使用する。

                // 自動生成Daoを生成
                DaoShippers genDao = new DaoShippers(this.GetDam());

                // パラメタに対して、動的に値を設定する。
                genDao.PK_ShipperID = testParameter.Shipper.ShipperID;

                // 戻り値 dt
                dt = new DataTable();

                // 自動生成Daoを実行
                genDao.S2_Select(dt);

                // DataTableToPOCO
                testReturn.Obj = DataToPoco.DataTableToPOCO <ShipperViweModel>(dt);

                break;

            default:     // 個別Daoを使用する。
                LayerD myDao = new LayerD(this.GetDam());
                myDao.Select(testParameter, testReturn);
                break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(testParameter);
        }
Exemplo n.º 8
0
        /// <summary>業務処理を実装</summary>
        /// <param name="testParameter">引数クラス</param>
        private void UOC_SelectAll_DSQL(TestParameterValue testParameter)
        {
            // 戻り値クラスを生成して、事前に戻り値に設定しておく。
            TestReturnValue testReturn = new TestReturnValue();

            this.ReturnValue = testReturn;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = null;
            List <ShipperViweModel> list = null;

            switch ((testParameter.ActionType.Split('%'))[1])
            {
            case "common":     // 共通Daoを使用する。

                // 共通Daoを生成
                CmnDao cmnDao = new CmnDao(this.GetDam());

                switch ((testParameter.ActionType.Split('%'))[2])
                {
                case "static":
                    // 静的SQLを指定
                    cmnDao.SQLFileName = "ShipperSelectOrder.sql";
                    break;

                case "dynamic":
                    // 動的SQLを指定
                    cmnDao.SQLFileName = "ShipperSelectOrder.xml";
                    break;
                }

                // ユーザ定義パラメタに対して、動的に値を設定する。
                string orderColumn   = "";
                string orderSequence = "";

                if (testParameter.OrderColumn == "c1")
                {
                    orderColumn = "ShipperID";
                }
                else if (testParameter.OrderColumn == "c2")
                {
                    orderColumn = "CompanyName";
                }
                else if (testParameter.OrderColumn == "c3")
                {
                    orderColumn = "Phone";
                }
                else
                {
                }

                if (testParameter.OrderSequence == "A")
                {
                    orderSequence = "ASC";
                }
                else if (testParameter.OrderSequence == "D")
                {
                    orderSequence = "DESC";
                }
                else
                {
                }

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                cmnDao.SetParameter("P1", "test");

                // ユーザ入力は指定しない。
                // ※ 動的SQLのVALタグは、前後の空白をつめることが有るので、
                //    必要であれば、前後の空白を明示的に指定する必要がある。
                cmnDao.SetUserParameter("COLUMN", " " + orderColumn + " ");
                cmnDao.SetUserParameter("SEQUENCE", " " + orderSequence + " ");

                // 戻り値 dt
                dt = new DataTable();

                // 共通Daoを実行
                cmnDao.ExecSelectFill_DT(dt);

                // DataTableToList
                list = DataToPoco.DataTableToList <ShipperViweModel>(dt);

                // 自動生成Daoを実行
                testReturn.Obj = list;

                break;

            //case "generate": // 自動生成Daoを使用する。
            //    // 当該SQLなし
            //    break;

            default:     // 個別Daoを使用する。
                LayerD myDao = new LayerD(this.GetDam());
                myDao.SelectAll_DSQL(testParameter, testReturn);
                break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(testParameter);
        }
Exemplo n.º 9
0
        /// <summary>業務処理を実装</summary>
        /// <param name="testParameter">引数クラス</param>
        private void UOC_SelectAll_DR(TestParameterValue testParameter)
        {
            // 戻り値クラスを生成して、事前に戻り値に設定しておく。
            TestReturnValue testReturn = new TestReturnValue();

            this.ReturnValue = testReturn;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = null;
            List <ShipperViweModel> list = null;

            switch ((testParameter.ActionType.Split('%'))[1])
            {
            case "common":     // 共通Daoを使用する。

                // 共通Daoを生成
                CmnDao cmnDao = new CmnDao(this.GetDam());

                switch ((testParameter.ActionType.Split('%'))[2])
                {
                case "static":
                    // 静的SQLを指定
                    cmnDao.SQLText = "SELECT * FROM Shippers";
                    break;

                case "dynamic":
                    // 動的SQLを指定
                    cmnDao.SQLText = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><ROOT>SELECT * FROM Shippers</ROOT>";
                    break;
                }

                // 共通Daoを実行
                IDataReader idr = cmnDao.ExecSelect_DR();

                // DataReaderToList
                list = DataToPoco.DataReaderToList <ShipperViweModel>(idr);

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

                // 戻り値を設定
                testReturn.Obj = list;

                break;

            case "generate":     // 自動生成Daoを使用する。

                // DRのI/Fなし

                // 自動生成Daoを生成
                DaoShippers genDao = new DaoShippers(this.GetDam());

                // 戻り値 dt
                dt = new DataTable();

                // 自動生成Daoを実行
                genDao.D2_Select(dt);

                // DataTableToList
                list = DataToPoco.DataTableToList <ShipperViweModel>(dt);

                // 戻り値を設定
                testReturn.Obj = list;

                break;

            default:     // 個別Daoを使用する。
                LayerD myDao = new LayerD(this.GetDam());
                myDao.SelectAll_DR(testParameter, testReturn);
                break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(testParameter);
        }