/// <summary>業務処理を実装</summary> /// <param name="testParameter">引数クラス</param> private void UOC_Invoke(TestParameterValue testParameter) { //メソッド引数にBaseParameterValueの派生の型を定義可能。 // 戻り値クラスを生成して、事前に戻り地に設定しておく。 TestReturnValue testReturn = new TestReturnValue(); this.ReturnValue = testReturn; // ↓業務処理----------------------------------------------------- // データアクセス クラスを生成する DaoSuppliers daoSuppliers = new DaoSuppliers(this.GetDam()); // 全件参照 DataTable dt1 = new DataTable(); daoSuppliers.D2_Select(dt1); // データアクセス クラスを生成する DaoCategories daoCategories = new DaoCategories(this.GetDam()); // 実行 DataTable dt2 = new DataTable(); daoCategories.D2_Select(dt2); // 戻り値を戻す testReturn.Obj = new DataTable[] { dt1, dt2 }; // ↑業務処理----------------------------------------------------- }
/// <summary>業務処理を実装</summary> /// <param name="testParameter">引数クラス</param> private void UOC_メソッド名(TestParameterValue testParameter) { //メソッド引数にBaseParameterValueの派生の型を定義可能。 // 戻り値クラスを生成して、事前に戻り地に設定しておく。 TestReturnValue testReturn = new TestReturnValue(); this.ReturnValue = testReturn; // ↓業務処理----------------------------------------------------- // 個別Dao LayerD myDao = new LayerD(this.GetDam()); //myDao.xxxx(testParameter, ref testReturn); // 共通Dao CmnDao cmnDao = new CmnDao(this.GetDam()); cmnDao.ExecSelectScalar(); // ↑業務処理----------------------------------------------------- }
/// <summary>業務処理を実装</summary> /// <param name="testParameter">引数クラス</param> private void UOC_SelectCount(TestParameterValue testParameter) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 TestReturnValue testReturn = new TestReturnValue(); this.ReturnValue = testReturn; // ↓業務処理----------------------------------------------------- switch ((testParameter.ActionType.Split('%'))[1]) { case "generate": // 自動生成Daoを使用する。 break; case "common": // 共通Daoを使用する。 default: // 共通Daoを生成 CmnDao cmnDao = new CmnDao(this.GetDam()); switch ((testParameter.ActionType.Split('%'))[2]) { case "static": // 静的SQLを指定 cmnDao.SQLFileName = "ShipperCount.sql"; break; case "dynamic": // 動的SQLを指定 cmnDao.SQLFileName = "ShipperCount.xml"; break; } // 共通Daoを実行 // 戻り値を設定 testReturn.Obj = cmnDao.ExecSelectScalar(); break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(testParameter); }
/// <summary>テンプレ</summary> /// <param name="testParameter">引数クラス</param> /// <param name="testReturn">戻り値クラス</param> public void テンプレ(TestParameterValue testParameter, TestReturnValue testReturn) { // ↓DBアクセス----------------------------------------------------- // ● 下記のいづれかの方法でSQLを設定する。 // -- ファイルから読み込む場合。 this.SetSqlByFile2("ファイル名"); // -- 直接指定する場合。 this.SetSqlByCommand("SQL文"); // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 this.SetParameter("P1", testParameter.ShipperID); object obj; // -- 追加、更新、削除の場合(件数を確認できる) obj = this.ExecInsUpDel_NonQuery(); // -- 先頭の1セル分の情報を返すSELECTクエリを実行する場合 obj = this.ExecSelectScalar(); // -- テーブル(or レコード)の情報を返す // SELECTクエリを実行する場合(引数 = データテーブル) obj = new DataTable(); this.ExecSelectFill_DT((DataTable)obj); // -- テーブル(or レコード)の情報を返す // SELECTクエリを実行する場合(引数 = データセット) obj = new DataSet(); this.ExecSelectFill_DS((DataSet)obj); // -- データリーダを返す IDataReader idr = (IDataReader)this.ExecSelect_DR(); // ↑DBアクセス----------------------------------------------------- // 戻り値を設定 testReturn.Obj = obj; }
/// <summary> /// check Method /// </summary> /// <param name="testParameter">testParameter</param> /// <param name="testReturn">testReturn</param> public void check(TestParameterValue testParameter, TestReturnValue testReturn) { // ↓DBアクセス----------------------------------------------------- string filename = ""; if ((testParameter.ActionType.Split('%'))[2] == "static") { // 静的SQL switch (testParameter.check) { case "check_7a": filename = "check_7a.xml"; break; case "check_11a": filename = "check_11a.xml"; break; case "check_11c": filename = "check_11c.xml"; break; } } else if ((testParameter.ActionType.Split('%'))[2] == "dynamic") { // 動的SQL switch (testParameter.check) { case "check_7a": filename = "check_7a.xml"; break; case "check_11a": filename = "check_11a.xml"; break; case "check_11c": filename = "check_11c.xml"; break; } } // -- ファイルから読み込む場合。 this.SetSqlByFile2(filename); switch (testParameter.check) { case "check_7a": ArrayList arr = new ArrayList(); arr.Add(1); arr.Add(2); arr.Add(3); arr.Add(4); this.SetParameter("PLIST", arr); break; case "check_11a": this.SetParameter("P", false); break; case "check_11c": this.SetParameter("P", true); break; } // 戻り値 ds DataSet ds = new DataSet(); // -- 一覧を返すSELECTクエリを実行する this.ExecSelectFill_DS(ds); // ↑DBアクセス----------------------------------------------------- // 戻り値を設定 testReturn.Obj = ds; }
/// <summary> /// btnMButton1のクリックイベント(件数取得) /// </summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <returns>URL</returns> protected string UOC_sampleScreen_btnMButton1_Click(FxEventArgs fxEventArgs) { // 引数クラスを生成 // 下位(B・D層)は、テスト クラスを流用する TestParameterValue testParameterValue = new TestParameterValue( this.ContentPageFileNoEx, fxEventArgs.ButtonID, "SelectCount", this.ddlDap.SelectedValue + "%" + this.ddlMode1.SelectedValue + "%" + this.ddlMode2.SelectedValue + "%" + this.ddlExRollback.SelectedValue, this.UserInfo); // 分離レベルの設定 DbEnum.IsolationLevelEnum iso = this.SelectIsolationLevel(); // B層を生成 LayerB myBusiness = new LayerB(); // 業務処理を実行 TestReturnValue testReturnValue = (TestReturnValue)myBusiness.DoBusinessLogic( (BaseParameterValue)testParameterValue, iso); // 結果表示するメッセージ エリア Label label = (Label)this.GetMasterWebControl("Label1"); label.Text = ""; if (testReturnValue.ErrorFlag == true) { // 結果(業務続行可能なエラー) label.Text = "ErrorMessageID:" + testReturnValue.ErrorMessageID + "\r\n"; label.Text += "ErrorMessage:" + testReturnValue.ErrorMessage + "\r\n"; label.Text += "ErrorInfo:" + testReturnValue.ErrorInfo + "\r\n"; } else { // 結果(正常系) label.Text = testReturnValue.Obj.ToString() + "件のデータがあります"; } // 画面遷移しないポストバックの場合は、urlを空文字列に設定する return ""; }
/// <summary>業務処理を実装</summary> /// <param name="testParameter">引数クラス</param> private void UOC_Insert(TestParameterValue testParameter) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 TestReturnValue testReturn = new TestReturnValue(); this.ReturnValue = testReturn; // ↓業務処理----------------------------------------------------- switch ((testParameter.ActionType.Split('%'))[1]) { case "common": // 共通Daoを使用する。 // 共通Daoを生成 CmnDao cmnDao = new CmnDao(this.GetDam()); cmnDao.SQLFileName = "ShipperInsert.sql"; // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 cmnDao.SetParameter("P2", testParameter.CompanyName); cmnDao.SetParameter("P3", testParameter.Phone); // 共通Daoを実行 // 戻り値を設定 testReturn.Obj = cmnDao.ExecInsUpDel_NonQuery(); break; case "generate": // 自動生成Daoを使用する。 // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // パラメタに対して、動的に値を設定する。 genDao.CompanyName = testParameter.CompanyName; genDao.Phone = testParameter.Phone; // 自動生成Daoを実行 // 戻り値を設定 testReturn.Obj = genDao.D1_Insert(); break; default: // 個別Daoを使用する。 LayerD myDao = new LayerD(this.GetDam()); myDao.Insert(testParameter, testReturn); break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(testParameter); }
/// <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); // ↑DBアクセス----------------------------------------------------- // 戻り値を設定 testReturn.Obj = dt; }
/// <summary>Insertクエリを実行する</summary> /// <param name="testParameter">引数クラス</param> /// <param name="testReturn">戻り値クラス</param> public void Insert(TestParameterValue testParameter, TestReturnValue testReturn) { // ↓DBアクセス----------------------------------------------------- // -- ファイルから読み込む場合。 this.SetSqlByFile2("ShipperInsert.sql"); // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 this.SetParameter("P2", testParameter.CompanyName); this.SetParameter("P3", testParameter.Phone); object obj; // -- 追加(件数を確認できる) obj = this.ExecInsUpDel_NonQuery(); // ↑DBアクセス----------------------------------------------------- // 戻り値を設定 testReturn.Obj = obj; }
/// <summary> /// GetIdentityValue() Method to get the Current Identity value of Shipper ID column in Shippers table /// </summary> /// <returns value="intIdentity">intIdentity as integer data type</returns> private int GetIdentityValue() { int intIdentity = 0; MyUserInfo userInfo = new MyUserInfo("user1", "Hostname"); LayerB lb = new LayerB(); TestParameterValue test = new TestParameterValue("SELECT IDENT_CURRENT('shippers')", "button1", "GetID", "SQL%individual%static%-", userInfo); TestReturnValue testreturn = (TestReturnValue)lb.DoBusinessLogic((BaseParameterValue)test); intIdentity = Convert.ToInt16(testreturn.Obj); return intIdentity; }
/// <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); // ↑DBアクセス----------------------------------------------------- // 戻り値を設定 testReturn.Obj = ds; }
/// <summary> /// GetListData() Method to get list of integer of ShipperID in shippers table before running the test cases /// </summary> /// <param name="list">list</param> /// <returns value="getList">List of Integer data type<int></returns> private List<int> GetListData() { List<int> getList = new List<int>(); MyUserInfo userInfo = new MyUserInfo("user1", "Hostname"); LayerB lb = new LayerB(); TestParameterValue test = new TestParameterValue("Select ShipperID from Shippers", "button1", "GetList", "SQL%individual%static%-", userInfo); TestReturnValue testreturn = (TestReturnValue)lb.DoBusinessLogic((BaseParameterValue)test); DataTable dt = (DataTable)testreturn.Obj; foreach (DataRow dr in dt.Rows) { getList.Add((int)dr[0]); } return getList; }
/// <summary> /// DeleteData() Method to delete the ShipperID's from shippers table which are inserted while running test cases. /// </summary> private void DeleteData() { MyUserInfo userInfo = new MyUserInfo("user1", "Hostname"); LayerB lb = new LayerB(); string strIDdelete = ToCommaString(testList); TestParameterValue test = new TestParameterValue("Delete from Shippers where ShipperID not in(" + strIDdelete + ")", "button1", "GetDelete", "SQL%individual%static%-", userInfo); TestReturnValue testreturn = (TestReturnValue)lb.DoBusinessLogic((BaseParameterValue)test); testList.Clear(); }
/// <summary>ロールバックのテスト</summary> /// <param name="testParameter">引数クラス</param> private void TestRollback(TestParameterValue testParameter) { switch ((testParameter.ActionType.Split('%'))[3]) { case "Business": // 戻り値が見えるか確認する。 ((TestReturnValue)this.ReturnValue).Obj = "戻り値が戻るか?"; // 業務例外のスロー throw new BusinessApplicationException( "ロールバックのテスト", "ロールバックのテスト", "エラー情報"); //break; // 到達できないためコメントアウト case "System": // 戻り値が見えるか確認する。 ((TestReturnValue)this.ReturnValue).Obj = "戻り値が戻るか?"; // システム例外のスロー throw new BusinessSystemException( "ロールバックのテスト", "ロールバックのテスト"); //break; // 到達できないためコメントアウト case "Other": // 戻り値が見えるか確認する。 ((TestReturnValue)this.ReturnValue).Obj = "戻り値が戻るか?"; // その他、一般的な例外のスロー throw new Exception("ロールバックのテスト"); //break; // 到達できないためコメントアウト case "Other-Business": // 戻り値が見えるか確認する。 ((TestReturnValue)this.ReturnValue).Obj = "戻り値が戻るか?"; // その他、一般的な例外(業務例外へ振り替え)のスロー throw new Exception("Other-Business"); //break; // 到達できないためコメントアウト case "Other-System": // 戻り値が見えるか確認する。 ((TestReturnValue)this.ReturnValue).Obj = "戻り値が戻るか?"; // その他、一般的な例外(システム例外へ振り替え)のスロー throw new Exception("Other-System"); //break; // 到達できないためコメントアウト } }
/// <summary>業務処理を実装</summary> /// <param name="testParameter">引数クラス</param> private void UOC_Delete(TestParameterValue testParameter) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 TestReturnValue testReturn = new TestReturnValue(); this.ReturnValue = testReturn; // ↓業務処理----------------------------------------------------- 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 = "ShipperDelete.sql"; break; case "dynamic": // 動的SQLを指定 cmnDao.SQLFileName = "ShipperDelete.xml"; break; } // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 cmnDao.SetParameter("P1", testParameter.ShipperID); // 共通Daoを実行 // 戻り値を設定 testReturn.Obj = cmnDao.ExecInsUpDel_NonQuery(); break; case "generate": // 自動生成Daoを使用する。 // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // パラメタに対して、動的に値を設定する。 genDao.PK_ShipperID = testParameter.ShipperID; // 自動生成Daoを実行 // 戻り値を設定 testReturn.Obj = genDao.S4_Delete(); break; default: // 個別Daoを使用する。 LayerD myDao = new LayerD(this.GetDam()); myDao.Delete(testParameter, testReturn); break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(testParameter); }
/// <summary>業務処理を実装</summary> /// <param name="testParameter">引数クラス</param> private void UOC_SelectAll_DSQL(TestParameterValue testParameter) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 TestReturnValue testReturn = new TestReturnValue(); this.ReturnValue = testReturn; // ↓業務処理----------------------------------------------------- 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 DataTable dt = new DataTable(); // 共通Daoを実行 cmnDao.ExecSelectFill_DT(dt); // 自動生成Daoを実行 testReturn.Obj = dt; break; //case "generate": // 自動生成Daoを使用する。 // // 当該SQLなし // break; default: // 個別Daoを使用する。 LayerD myDao = new LayerD(this.GetDam()); myDao.SelectAll_DSQL(testParameter, testReturn); break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(testParameter); }
/// <summary>件数情報を返すSELECTクエリを実行する</summary> /// <param name="testParameter">引数クラス</param> /// <param name="testReturn">戻り値クラス</param> public void SelectCount(TestParameterValue testParameter, TestReturnValue testReturn) { // ↓DBアクセス----------------------------------------------------- string filename = ""; if ((testParameter.ActionType.Split('%'))[2] == "static") { // 静的SQL filename = "ShipperCount.sql"; } else if ((testParameter.ActionType.Split('%'))[2] == "dynamic") { // 動的SQL filename = "ShipperCount.xml"; } // -- ファイルから読み込む場合。 this.SetSqlByFile2(filename); object obj; // -- 件数情報を返すSELECTクエリを実行する obj = this.ExecSelectScalar(); // ↑DBアクセス----------------------------------------------------- // 戻り値を設定 testReturn.Obj = obj; }
public void SampleScreen_DaoAndDam_Test(string screen, string buttonID, string action, string dbGeneration, string user, string ipAddress, string isolationLevel, string shipperID, string companyName, string phone) { //using (TransactionScope scope = new TransactionScope()) //{ // 引数クラスを生成 // 下位(B・D層)は、テスト クラスを流用する MyUserInfo userInfo = new MyUserInfo(user, ipAddress); TestParameterValue testParameterValue = new TestParameterValue( screen, buttonID, action, dbGeneration, userInfo); TestReturnValue resultTestReturnValue; TestReturnValue expectedTestReturnValue; DataSet expectedDataSet = new DataSet(); DataSet resultDataSet = new DataSet(); //Assert conditions switch (action) { case "SelectCount": CallBusinessLogic(screen, buttonID, action, dbGeneration, user, ipAddress, isolationLevel, testParameterValue, out resultTestReturnValue, out expectedTestReturnValue); Assert.AreEqual(resultTestReturnValue.Obj.ToString(), expectedTestReturnValue.Obj.ToString()); break; case "SelectAll_DT": case "SelectAll_DR": case "SelectAll_DSQL": testParameterValue.OrderColumn = "c1"; testParameterValue.OrderSequence = "A"; CallBusinessLogic(screen, buttonID, action, dbGeneration, user, ipAddress, isolationLevel, testParameterValue, out resultTestReturnValue, out expectedTestReturnValue); DataTable expectedDataTable = (DataTable)expectedTestReturnValue.Obj; DataTable resultDataTable = (DataTable)resultTestReturnValue.Obj; if (!resultTestReturnValue.ErrorFlag) Assert.AreEqual(expectedDataTable.Rows.Count, resultDataTable.Rows.Count); else Assert.AreEqual(resultTestReturnValue.ErrorFlag, true); break; case "SelectAll_DS": CallBusinessLogic(screen, buttonID, action, dbGeneration, user, ipAddress, isolationLevel, testParameterValue, out resultTestReturnValue, out expectedTestReturnValue); expectedDataSet = (DataSet)expectedTestReturnValue.Obj; resultDataSet = (DataSet)resultTestReturnValue.Obj; if (!resultTestReturnValue.ErrorFlag) Assert.AreEqual(resultDataSet.Tables.Count, expectedDataSet.Tables.Count); else Assert.AreEqual(resultTestReturnValue.ErrorFlag, true); break; case "Select": testParameterValue.OrderColumn = "c1"; testParameterValue.OrderSequence = "A"; testParameterValue.ShipperID = 1; CallBusinessLogic(screen, buttonID, action, dbGeneration, user, ipAddress, isolationLevel, testParameterValue, out resultTestReturnValue, out expectedTestReturnValue); if (!resultTestReturnValue.ErrorFlag) { Assert.AreEqual(resultTestReturnValue.ShipperID, expectedTestReturnValue.ShipperID); Assert.AreEqual(resultTestReturnValue.Phone, expectedTestReturnValue.Phone); Assert.AreEqual(resultTestReturnValue.CompanyName, expectedTestReturnValue.CompanyName); } else Assert.AreEqual(resultTestReturnValue.ErrorFlag, true); break; case "Insert": testParameterValue.CompanyName = companyName; testParameterValue.Phone = phone; CallBusinessLogic(screen, buttonID, action, dbGeneration, user, ipAddress, isolationLevel, testParameterValue, out resultTestReturnValue, out expectedTestReturnValue); if (!resultTestReturnValue.ErrorFlag) { Assert.AreEqual(resultTestReturnValue.Obj.ToString(), expectedTestReturnValue.Obj.ToString()); } else Assert.AreEqual(resultTestReturnValue.ErrorFlag, true); break; case "Update": testParameterValue.ShipperID = int.Parse(shipperID); testParameterValue.CompanyName = companyName; testParameterValue.Phone = phone; CallBusinessLogic(screen, buttonID, action, dbGeneration, user, ipAddress, isolationLevel, testParameterValue, out resultTestReturnValue, out expectedTestReturnValue); if (!resultTestReturnValue.ErrorFlag) { Assert.AreEqual(resultTestReturnValue.Obj.ToString(), expectedTestReturnValue.Obj.ToString()); } else Assert.AreEqual(resultTestReturnValue.ErrorFlag, true); break; case "Delete": // 情報の設定 testParameterValue.ShipperID = int.Parse(shipperID); CallBusinessLogic(screen, buttonID, action, dbGeneration, user, ipAddress, isolationLevel, testParameterValue, out resultTestReturnValue, out expectedTestReturnValue); if (!resultTestReturnValue.ErrorFlag) { if (resultTestReturnValue.Obj.ToString() == "1") { Assert.AreEqual(resultTestReturnValue.Obj.ToString(), "1"); } else { Assert.AreEqual(resultTestReturnValue.Obj.ToString(), "0"); } } else Assert.AreEqual(resultTestReturnValue.ErrorFlag, true); break; case "SelectJoin0": case "SelectJoin1": case "SelectJoin2": case "TestSqlsvr4c": case "TestSqlsvr4b": case "TestSqlsvr4a": case "TestSqlsvr2c": case "TestSqlsvr2d": case "TestSqlsvr_n": case "TestSqlsvr_1e": case "TestSqlsvr1a": case "TestSqlsvr1b": case "TestSqlsvr2e": case "TestSqlsvr2f": testParameterValue.CompanyName = companyName; testParameterValue.OrderColumn = "c1"; testParameterValue.OrderSequence = "A"; CallBusinessLogic(screen, buttonID, action, dbGeneration, user, ipAddress, isolationLevel, testParameterValue, out resultTestReturnValue, out expectedTestReturnValue); expectedDataSet = (DataSet)expectedTestReturnValue.Obj; resultDataSet = (DataSet)resultTestReturnValue.Obj; if (!resultTestReturnValue.ErrorFlag) Assert.AreEqual(resultDataSet.Tables.Count, expectedDataSet.Tables.Count); else Assert.AreEqual(resultTestReturnValue.ErrorFlag, true); break; case "SelectCase1a": case "SelectCase1b": case "SelectCase2a": case "SelectCase2b": case "SelectCase3a": case "SelectCase3b": case "SelectCase4a": case "SelectCase4b": case "SelectCase5a": case "SelectCase5b": case "SelectCaseDefault1a": case "SelectCaseDefault1b": case "SelectCaseDefault2a": case "SelectCaseDefault2b": case "SelectCaseDefault3a": case "SelectCaseDefault3b": case "SelectCaseDefault4a": case "SelectCaseDefault4b": TestParameterValue testParameterValue1 = new TestParameterValue( screen, buttonID, "SelectCase", dbGeneration, userInfo); testParameterValue1.SelectCase = action; CallBusinessLogic(screen, buttonID, action, dbGeneration, user, ipAddress, isolationLevel, testParameterValue1, out resultTestReturnValue, out expectedTestReturnValue); DataTable expectedDatatable = (DataTable)expectedTestReturnValue.Obj; DataTable resultDatatable = (DataTable)resultTestReturnValue.Obj; if (!resultTestReturnValue.ErrorFlag) Assert.AreEqual(expectedDatatable.Rows.Count, resultDatatable.Rows.Count); else Assert.AreEqual(resultTestReturnValue.ErrorFlag, true); break; case "check_1": case "check_2": case "check_3": case "check_4": case "check_7a": case "check_11a": case "check_11c": case "check_6b": case "check_3f": case "check_9c": case "check_5": TestParameterValue testParameterValue2 = new TestParameterValue( screen, buttonID, "check", dbGeneration, userInfo); testParameterValue2.check = action; testParameterValue.OrderColumn = "c1"; testParameterValue.OrderSequence = "A"; CallBusinessLogic(screen, buttonID, action, dbGeneration, user, ipAddress, isolationLevel, testParameterValue2, out resultTestReturnValue, out expectedTestReturnValue); expectedDataSet = (DataSet)expectedTestReturnValue.Obj; resultDataSet = (DataSet)resultTestReturnValue.Obj; if (!resultTestReturnValue.ErrorFlag) Assert.AreEqual(expectedDataSet.Tables.Count, resultDataSet.Tables.Count); else Assert.AreEqual(resultTestReturnValue.ErrorFlag, true); break; case "edit_8e": case "edit_4e": case "edit_3e": case "edit_9a": case "edit_9b1": case "edit_9c1": case "edit_2a": case "edit_5e": case "edit_9e": case "edit_10e": case "edit_11e": TestParameterValue testParameterValue3 = new TestParameterValue( screen, buttonID, "edit", dbGeneration, userInfo); testParameterValue3.SelectCase = action; CallBusinessLogic(screen, buttonID, action, dbGeneration, user, ipAddress, isolationLevel, testParameterValue3, out resultTestReturnValue, out expectedTestReturnValue); expectedDataSet = (DataSet)expectedTestReturnValue.Obj; resultDataSet = (DataSet)resultTestReturnValue.Obj; if (!resultTestReturnValue.ErrorFlag) Assert.AreEqual(expectedDataSet.Tables.Count, resultDataSet.Tables.Count); else Assert.AreEqual(resultTestReturnValue.ErrorFlag, true); break; case "ArgumentException0": case "ArgumentException1": case "ArgumentException2": case "ArgumentException3": case "ArgumentException4": case "ArgumentException5": case "ArgumentException6": case "ArgumentException7": case "ArgumentException8": case "ArgumentException9": case "ArgumentException10": case "ArgumentException11": case "ArgumentException12": case "ArgumentException13": case "ArgumentException14": case "ArgumentException15": case "ArgumentException16": case "ArgumentException17": case "ArgumentException18": case "ArgumentException19": case "ArgumentException20": case "ArgumentException21": case "ArgumentException22": case "ArgumentException23": TestParameterValue testParameterValue4 = new TestParameterValue( screen, buttonID, "ArgumentException", dbGeneration, userInfo); testParameterValue4.SelectCase = action; CallBusinessLogic(screen, buttonID, action, dbGeneration, user, ipAddress, isolationLevel, testParameterValue4, out resultTestReturnValue, out expectedTestReturnValue); expectedDataSet = (DataSet)expectedTestReturnValue.Obj; resultDataSet = (DataSet)resultTestReturnValue.Obj; if (!resultTestReturnValue.ErrorFlag) Assert.AreEqual(expectedDataSet.Tables.Count, resultDataSet.Tables.Count); else Assert.AreEqual(resultTestReturnValue.ErrorFlag, true); break; } //} }
/// <summary> /// TestMethodForParamTag Method /// </summary> /// <param name="testParameter">testParameter</param> /// <param name="testReturn">testReturn</param> public void TestMethodForParamTag(TestParameterValue testParameter, TestReturnValue testReturn) { BaseDam bd = (BaseDam)this.GetDam(); bd.SetSqlByFile(testParameter.Filepath); DataTable dt = new DataTable(); dt = bd.GetParametersFromPARAMTag(); testReturn.Obj = dt; }
/// <summary>CallBusinessLogic Method</summary> /// <param name="screen">screen ID</param> /// <param name="buttonID">Button ID</param> /// <param name="action">Control action name</param> /// <param name="dbGeneration">Db Generation</param> /// <param name="user">User Info</param> /// <param name="ipAddress">Ip address</param> /// <param name="isolationLevel">Isolation level</param> /// <param name="testParameterValue">Test Parameter values</param> /// <returns>resultTestReturnValue</returns> /// <returns>expectedTestReturnValue</returns> private void CallBusinessLogic(string screen, string buttonID, string action, string dbGeneration, string user, string ipAddress, string isolationLevel, TestParameterValue testParameterValue, out TestReturnValue resultTestReturnValue, out TestReturnValue expectedTestReturnValue) { // 分離レベルの設定 DbEnum.IsolationLevelEnum iso = SelectIsolationLevel(isolationLevel); // B層を生成 LayerB myBusiness = new LayerB(); // 業務処理を実行 resultTestReturnValue = (TestReturnValue)myBusiness.DoBusinessLogic((BaseParameterValue)testParameterValue, iso); expectedTestReturnValue = (TestReturnValue)myBusiness.DoBusinessLogic((BaseParameterValue)testParameterValue, iso); }
/// <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); // 戻り値 dt DataTable dt = new DataTable(); // 3列生成 dt.Columns.Add("c1", System.Type.GetType("System.String")); dt.Columns.Add("c2", System.Type.GetType("System.String")); dt.Columns.Add("c3", System.Type.GetType("System.String")); // -- 一覧を返すSELECTクエリを実行する IDataReader idr = (IDataReader)this.ExecSelect_DR(); while (idr.Read()) { // DRから読む object[] objArray = new object[3]; idr.GetValues(objArray); // DTに設定する。 DataRow dr = dt.NewRow(); dr.ItemArray = objArray; dt.Rows.Add(dr); } // 終了したらクローズ idr.Close(); // ↑DBアクセス----------------------------------------------------- // 戻り値を設定 testReturn.Obj = dt; }
/// <summary> /// GetParam Method /// </summary> /// <param name="path">path</param> /// <param name="dt">dt</param> /// <param name="dt1">dt1</param> /// <param name="dbGeneration">dbGeneration</param> private void GetParam(string path, out DataTable dt, out DataTable dt1, string dbGeneration) { MyUserInfo userInfo = new MyUserInfo("user1", "Hostname"); LayerB lb = new LayerB(); TestParameterValue test = new TestParameterValue("screen1", "button1", "GetParametersFromPARAMTag", dbGeneration, userInfo); test.Filepath = path; TestReturnValue testreturn = (TestReturnValue)lb.DoBusinessLogic((BaseParameterValue)test); dt = (DataTable)testreturn.Obj; dt1 = (DataTable)testreturn.Obj; }
/// <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.ShipperID); // 戻り値 dt DataTable dt = new DataTable(); // -- 1レコードを返すSELECTクエリを実行する this.ExecSelectFill_DT(dt); // ↑DBアクセス----------------------------------------------------- //// 戻り値を設定 // 不要 //testReturn.Obj = dt; // キャストの対策コードを挿入 // ・SQLの場合、ShipperIDのintがInt32型にマップされる。 // ・ODPの場合、ShipperIDのNUMBERがInt64型にマップされる。 // ・DB2の場合、ShipperIDのDECIMALがxxx型にマップされる。 if (dt.Rows[0].ItemArray.GetValue(0).GetType().ToString() == "System.Int32") { // Int32なのでキャスト testReturn.ShipperID = (int)dt.Rows[0].ItemArray.GetValue(0); } else { // それ以外の場合、一度、文字列に変換してInt32.Parseする。 testReturn.ShipperID = int.Parse(dt.Rows[0].ItemArray.GetValue(0).ToString()); } testReturn.CompanyName = (string)dt.Rows[0].ItemArray.GetValue(1); testReturn.Phone = (string)dt.Rows[0].ItemArray.GetValue(2); }
/// <summary>一覧を返すSELECTクエリを実行する</summary> /// <param name="testParameter">引数クラス</param> /// <param name="testReturn">戻り値クラス</param> public void SelectCase(TestParameterValue testParameter, TestReturnValue testReturn) { // ↓DBアクセス----------------------------------------------------- string filename = ""; if ((testParameter.ActionType.Split('%'))[2] == "static") { // 静的SQL switch (testParameter.SelectCase) { case "SelectCase1a": filename = "select-case1a.dpq.xml"; break; case "SelectCase1b": filename = "select-case1b.dpq.xml"; break; case "SelectCase2a": filename = "select-case2a.dpq.xml"; break; case "SelectCase2b": filename = "select-case2b.dpq.xml"; break; case "SelectCase3a": filename = "select-case3a.dpq.xml"; break; case "SelectCase3b": filename = "select-case3b.dpq.xml"; break; case "SelectCase4a": filename = "select-case4a.dpq.xml"; break; case "SelectCase4b": filename = "select-case4b.dpq.xml"; break; case "SelectCaseDefault1a": filename = "select-case-default1a.dpq.xml"; break; case "SelectCaseDefault1b": filename = "select-case-default1b.dpq.xml"; break; case "SelectCaseDefault2a": filename = "select-case-default2a.dpq.xml"; break; case "SelectCaseDefault2b": filename = "select-case-default2b.dpq.xml"; break; case "SelectCaseDefault3a": filename = "select-case-default3a.dpq.xml"; break; case "SelectCaseDefault3b": filename = "select-case-default3b.dpq.xml"; break; case "SelectCaseDefault4a": filename = "select-case-default4a.dpq.xml"; break; case "SelectCaseDefault4b": filename = "select-case-default4b.dpq.xml"; break; } } else if ((testParameter.ActionType.Split('%'))[2] == "dynamic") { // 動的SQL switch (testParameter.SelectCase) { case "SelectCase1a": filename = "select-case1a.dpq.xml"; break; case "SelectCase1b": filename = "select-case1b.dpq.xml"; break; case "SelectCase2a": filename = "select-case2a.dpq.xml"; break; case "SelectCase2b": filename = "select-case2b.dpq.xml"; break; case "SelectCase3a": filename = "select-case3a.dpq.xml"; break; case "SelectCase3b": filename = "select-case3b.dpq.xml"; break; case "SelectCase4a": filename = "select-case4a.dpq.xml"; break; case "SelectCase4b": filename = "select-case4b.dpq.xml"; break; case "SelectCaseDefault1a": filename = "select-case-default1a.dpq.xml"; break; case "SelectCaseDefault1b": filename = "select-case-default1b.dpq.xml"; break; case "SelectCaseDefault2a": filename = "select-case-default2a.dpq.xml"; break; case "SelectCaseDefault2b": filename = "select-case-default2b.dpq.xml"; break; case "SelectCaseDefault3a": filename = "select-case-default3a.dpq.xml"; break; case "SelectCaseDefault3b": filename = "select-case-default3b.dpq.xml"; break; case "SelectCaseDefault4a": filename = "select-case-default4a.dpq.xml"; break; case "SelectCaseDefault4b": filename = "select-case-default4b.dpq.xml"; break; } } // -- ファイルから読み込む場合。 this.SetSqlByFile2(filename); switch (testParameter.SelectCase) { // Select Case case "SelectCase1a": this.SetParameter("sel", "a1"); break; case "SelectCase1b": this.SetParameter("sel", 111); break; case "SelectCase2a": this.SetParameter("sel", "b2"); break; case "SelectCase2b": this.SetParameter("sel", 222); break; case "SelectCase3a": this.SetParameter("sel", "c3"); break; case "SelectCase3b": this.SetParameter("sel", 333); break; case "SelectCase4a": this.SetParameter("sel", "xxx"); break; case "SelectCase4b": this.SetParameter("sel", 999); break; //Select Case Default case "SelectCaseDefault1a": this.SetParameter("sel", "a1"); break; case "SelectCaseDefault1b": this.SetParameter("sel", 111); break; case "SelectCaseDefault2a": this.SetParameter("sel", "b2"); break; case "SelectCaseDefault2b": this.SetParameter("sel", 222); break; case "SelectCaseDefault3a": this.SetParameter("sel", "c3"); break; case "SelectCaseDefault3b": this.SetParameter("sel", 333); break; case "SelectCaseDefault4a": this.SetParameter("sel", "xxx"); break; case "SelectCaseDefault4b": this.SetParameter("sel", 999); break; } // 戻り値 dt DataTable dt = new DataTable(); // -- 一覧を返すSELECTクエリを実行する this.ExecSelectFill_DT(dt); // ↑DBアクセス----------------------------------------------------- // 戻り値を設定 testReturn.Obj = dt; }
/// <summary>Deleteクエリを実行する</summary> /// <param name="testParameter">引数クラス</param> /// <param name="testReturn">戻り値クラス</param> public void Delete(TestParameterValue testParameter, TestReturnValue testReturn) { // ↓DBアクセス----------------------------------------------------- string filename = ""; if ((testParameter.ActionType.Split('%'))[2] == "static") { // 静的SQL filename = "ShipperDelete.sql"; } else if ((testParameter.ActionType.Split('%'))[2] == "dynamic") { // 動的SQL filename = "ShipperDelete.xml"; } // -- ファイルから読み込む場合。 this.SetSqlByFile2(filename); // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 this.SetParameter("P1", testParameter.ShipperID); object obj; // -- 追削除(件数を確認できる) obj = this.ExecInsUpDel_NonQuery(); // ↑DBアクセス----------------------------------------------------- // 戻り値を設定 testReturn.Obj = obj; }
/// <summary>業務処理を実装</summary> /// <param name="testParameter">引数クラス</param> private void UOC_SelectAll_DR(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.SQLText = "SELECT * FROM Shippers"; break; case "dynamic": // 動的SQLを指定 cmnDao.SQLText = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><ROOT>SELECT * FROM Shippers</ROOT>"; break; } // 戻り値 dt dt = new DataTable(); // 3列生成 dt.Columns.Add("c1", System.Type.GetType("System.String")); dt.Columns.Add("c2", System.Type.GetType("System.String")); dt.Columns.Add("c3", System.Type.GetType("System.String")); // 共通Daoを実行 IDataReader idr = cmnDao.ExecSelect_DR(); while (idr.Read()) { // DRから読む object[] objArray = new object[3]; idr.GetValues(objArray); // DTに設定する。 DataRow dr = dt.NewRow(); dr.ItemArray = objArray; dt.Rows.Add(dr); } // 終了したらクローズ idr.Close(); // 戻り値を設定 testReturn.Obj = dt; break; case "generate": // 自動生成Daoを使用する。 // DRのI/Fなし // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // 戻り値 dt dt = new DataTable(); // 自動生成Daoを実行 genDao.D2_Select(dt); // 戻り値を設定 testReturn.Obj = (DataTable)dt; break; default: // 個別Daoを使用する。 LayerD myDao = new LayerD(this.GetDam()); myDao.SelectAll_DR(testParameter, testReturn); break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(testParameter); }
/// <summary> /// TestSqlsvr4a Method /// </summary> /// <param name="testParameter">testParameter</param> /// <param name="testReturn">testReturn</param> public void TestSqlsvr4a(TestParameterValue testParameter, TestReturnValue testReturn) { // ↓DBアクセス----------------------------------------------------- string filename = ""; if ((testParameter.ActionType.Split('%'))[2] == "static") { // 静的SQL filename = "testSqlsvr4a.dpq.xml"; } else if ((testParameter.ActionType.Split('%'))[2] == "dynamic") { // 動的SQL filename = "testSqlsvr4a.dpq.xml"; // 通常、動的SQLをSetSqlByCommandで直接指定するような使い方はしない。 } this.SetSqlByFile2(filename); string orderColumn = ""; string orderSequence = ""; if (testParameter.OrderColumn == "c1") { orderColumn = "companyname"; } else if (testParameter.OrderColumn == "c2") { orderColumn = "CompanyName"; } else if (testParameter.OrderColumn == "c3") { orderColumn = "CompanyName"; } if (testParameter.OrderSequence == "A") { orderSequence = "ASC"; } else if (testParameter.OrderSequence == "D") { orderSequence = "DESC"; } // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 this.SetParameter("P1", "test"); this.SetParameter("P2", "test"); // ユーザ入力は指定しない。 // ※ 動的SQLのVALタグは、前後の空白をつめることが有るので、 // 必要であれば、前後の空白を明示的に指定する必要がある。 this.SetUserParameter("COLUMN", orderColumn); this.SetUserParameter("SEQUENCE", " " + orderSequence + " "); this.SetParameter("j1", true); this.SetParameter("j2", true); // 戻り値 ds DataSet ds = new DataSet(); // -- 一覧を返すSELECTクエリを実行する this.ExecSelectFill_DS(ds); // ↑DBアクセス----------------------------------------------------- // 戻り値を設定 testReturn.Obj = ds; }
/// <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.ShipperID); // 戻り値 dt dt = new DataTable(); // 共通Daoを実行 cmnDao.ExecSelectFill_DT(dt); // キャストの対策コードを挿入 // ・SQLの場合、ShipperIDのintがInt32型にマップされる。 // ・ODPの場合、ShipperIDのNUMBERがInt64型にマップされる。 // ・DB2の場合、ShipperIDのDECIMALがxxx型にマップされる。 if (dt.Rows[0].ItemArray.GetValue(0).GetType().ToString() == "System.Int32") { // Int32なのでキャスト testReturn.ShipperID = (int)dt.Rows[0].ItemArray.GetValue(0); } else { // それ以外の場合、一度、文字列に変換してInt32.Parseする。 testReturn.ShipperID = int.Parse(dt.Rows[0].ItemArray.GetValue(0).ToString()); } testReturn.CompanyName = (string)dt.Rows[0].ItemArray.GetValue(1); testReturn.Phone = (string)dt.Rows[0].ItemArray.GetValue(2); break; case "generate": // 自動生成Daoを使用する。 // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // パラメタに対して、動的に値を設定する。 genDao.PK_ShipperID = testParameter.ShipperID; // 戻り値 dt dt = new DataTable(); // 自動生成Daoを実行 genDao.S2_Select(dt); // キャストの対策コードを挿入 // ・SQLの場合、ShipperIDのintがInt32型にマップされる。 // ・ODPの場合、ShipperIDのNUMBERがInt64型にマップされる。 // ・DB2の場合、ShipperIDのDECIMALがxxx型にマップされる。 if (dt.Rows[0].ItemArray.GetValue(0).GetType().ToString() == "System.Int32") { // Int32なのでキャスト testReturn.ShipperID = (int)dt.Rows[0].ItemArray.GetValue(0); } else { // それ以外の場合、一度、文字列に変換してInt32.Parseする。 testReturn.ShipperID = int.Parse(dt.Rows[0].ItemArray.GetValue(0).ToString()); } testReturn.CompanyName = (string)dt.Rows[0].ItemArray.GetValue(1); testReturn.Phone = (string)dt.Rows[0].ItemArray.GetValue(2); break; default: // 個別Daoを使用する。 LayerD myDao = new LayerD(this.GetDam()); myDao.Select(testParameter, testReturn); break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(testParameter); }
/// <summary>トランザクション制御機能のテスト(GetTransactionPatterns)</summary> protected void btnTxGID_Click(object sender, EventArgs e) { // 引数クラスを生成 // 下位(B・D層)は、テスト クラスを流用する MyType.TestParameterValue testParameterValue = new MyType.TestParameterValue( "", "画面ID", "ボタンID", this.ddlDap.SelectedValue + "%" + this.ddlExRollback.SelectedValue + "%" + this.ddlExStatus.SelectedValue, new MyUserInfo("ユーザ名", Request.UserHostAddress)); // ※ ActionTypeのフォーマット:Dap // TransactionGroupIDを設定 testParameterValue.Obj = this.ddlTxGpID.SelectedValue; // 業務処理を実行 TestMTC_txg testMTC = new TestMTC_txg(); MyReturnValue myReturnValue = (MyReturnValue)testMTC.DoBusinessLogic( (BaseParameterValue)testParameterValue, DbEnum.IsolationLevelEnum.User); this.lblTxID.Text = ""; // 例外判定 if (myReturnValue.ErrorFlag) { // エラーメッセージ this.lblTxID.Text = myReturnValue.ErrorMessage; } else { string[] temp1 = (string[])((MyType.TestReturnValue)myReturnValue).Obj; // TransactionPatternIDをリストする。 foreach (string temp2 in temp1) { this.lblTxID.Text += temp2 + "<br/>"; } } }
/// <summary> /// ページロードのUOCメソッド(個別:ポストバック) /// </summary> /// <remarks> /// 実装必須 /// </remarks> protected override void UOC_FormInit_PostBack() { // フォーム初期化(ポストバック)時に実行する処理を実装する // TODO: Session["DAP"] = this.ddlDap.SelectedValue; if (this.ddlDap.SelectedValue == "SQL") { Session["DBMS"] = DbEnum.DBMSType.SQLServer; } else { Session["DBMS"] = DbEnum.DBMSType.Oracle; } #region マスタ・データのロードと設定 // 引数クラスを生成 // 下位(B・D層)は、テスト クラスを流用する TestParameterValue testParameterValue = new TestParameterValue( this.ContentPageFileNoEx, "FormInit_PostBack", "Invoke", this.ddlDap.SelectedValue, this.UserInfo); // B層を生成 GetMasterData getMasterData = new GetMasterData(); // 業務処理を実行 TestReturnValue testReturnValue = (TestReturnValue)getMasterData.DoBusinessLogic( (BaseParameterValue)testParameterValue, DbEnum.IsolationLevelEnum.ReadCommitted); DataTable[] dts = (DataTable[])testReturnValue.Obj; DataTable dt = null; // daoSuppliers _3TierEngine.CreateDropDownListDataSourceDataTable( dts[0], "SupplierID", "CompanyName", out dt, "value", "text"); this.ddldsdt_Suppliers = dt; // daoCategories _3TierEngine.CreateDropDownListDataSourceDataTable( dts[1], "CategoryID", "CategoryName", out dt, "value", "text"); this.ddldsdt_Categories = dt; #endregion }