/// <summary>Insertクエリを実行する</summary> /// <param name="testParameter">引数クラス</param> /// <param name="testReturn">戻り値クラス</param> public void Insert(TestParameterValue testParameter, TestReturnValue testReturn) { // ↓DBアクセス----------------------------------------------------- // -- ファイルから読み込む場合。 this.SetSqlByFile2("Customers_Orders_DDRInsert.sql"); // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 this.SetParameter("P1", testParameter.CustomerId); this.SetParameter("P2", testParameter.Name); this.SetParameter("P3", testParameter.RegionId); this.SetParameter("P4", testParameter.CustomerId); this.SetParameter("P5", testParameter.ProductId); this.SetParameter("P6", DateTime.Now.Date); object obj; // -- 追加(件数を確認できる) obj = this.ExecInsUpDel_NonQuery(); // ↑DBアクセス----------------------------------------------------- // 戻り値を設定 testReturn.Obj = obj; }
/// <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; }
/// <summary> /// ExecuteMultiShardQuery method to get the database records using MultiShardConnection, /// MultiShardCommand,multiShardDataReader class /// </summary> /// <param name="shardMap"></param> /// <param name="credentialsConnectionString"></param> public static void ExecuteMultiShardQuery(RangeShardMap <int> shardMap) { // Get the Shards from Shard Map manager MultiShardConfiguration.Shards = shardMap.GetShards(); TestParameterValue testParameterValue = new TestParameterValue( "MultiShard", "ExecMultiShard", "SelectAll_DR", "SqlDbWithMultiShard" + "%" + "individual" + "%" + "-", new MyUserInfo("MultiShard", "MultiShard")); // 分離レベルの設定 DbEnum.IsolationLevelEnum iso = DbEnum.IsolationLevelEnum.NoTransaction; // B層を生成 LayerB myBusiness = new LayerB(); // 業務処理を実行 TestReturnValue testReturnValue = (TestReturnValue)myBusiness.DoBusinessLogic( (BaseParameterValue)testParameterValue, iso); string strErrorMsg = ""; if (testReturnValue.ErrorFlag == true) { // 結果(業務続行可能なエラー) strErrorMsg = "ErrorMessageID:" + testReturnValue.ErrorMessageID + "\r\n"; strErrorMsg += "ErrorMessage:" + testReturnValue.ErrorMessage + "\r\n"; strErrorMsg += "ErrorInfo:" + testReturnValue.ErrorInfo + "\r\n"; Console.WriteLine("Inserted failed for Error message : {0}", strErrorMsg); } else { //Converts Return value object to dataTable data to display the data in screen DataTable dtTable = (DataTable)testReturnValue.Obj; int rows = 0; // Get the column names TableFormatter formatter = new TableFormatter(ShardManagementUtils.GetColumnNames(dtTable).ToArray()); foreach (DataRow dr in dtTable.Rows) { // Extract just database name from the $ShardLocation pseudocolumn to make the output formater cleaner. // Note that the $ShardLocation pseudocolumn is always the last column int shardLocationOrdinal = dr.ItemArray.Length - 1; dr.ItemArray[shardLocationOrdinal] = ShardManagementUtils.ExtractDatabaseName(dr.ItemArray[shardLocationOrdinal].ToString()); // Add values to output formatter formatter.AddRow(dr.ItemArray); rows++; } Console.WriteLine(formatter.ToString()); Console.WriteLine("({0} rows returned)", rows); } }
/// <summary>Deleteクエリを実行する</summary> /// <param name="testParameter">引数クラス</param> /// <param name="testReturn">戻り値クラス</param> public void Delete(TestParameterValue testParameter, TestReturnValue testReturn) { // ↓DBアクセス----------------------------------------------------- string filename = ""; // 静的SQL filename = "CustomersDeleteDDR.sql"; // -- ファイルから読み込む場合。 this.SetSqlByFile2(filename); // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 this.SetParameter("P1", testParameter.CustomerId); object obj; // -- 追削除(件数を確認できる) obj = this.ExecInsUpDel_NonQuery(); // ↑DBアクセス----------------------------------------------------- // 戻り値を設定 testReturn.Obj = obj; }
/// <summary> /// TestSqlsvr4c Method /// </summary> /// <param name="testParameter">testParameter</param> /// <param name="testReturn">testReturn</param> public void TestSqlsvr4c(TestParameterValue testParameter, TestReturnValue testReturn) { // ↓DBアクセス----------------------------------------------------- string filename = ""; if ((testParameter.ActionType.Split('%'))[2] == "static") { // 静的SQL filename = "testSqlsvr4c.dpq.xml"; } else if ((testParameter.ActionType.Split('%'))[2] == "dynamic") { // 動的SQL filename = "testSqlsvr4c.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("P2", "test"); // ユーザ入力は指定しない。 // ※ 動的SQLのVALタグは、前後の空白をつめることが有るので、 // 必要であれば、前後の空白を明示的に指定する必要がある。 this.SetUserParameter("COLUMN", orderColumn); this.SetUserParameter("SEQUENCE", " " + orderSequence + " "); this.SetParameter("j2", true); // 戻り値 ds DataSet ds = new DataSet(); // -- 一覧を返すSELECTクエリを実行する this.ExecSelectFill_DS(ds); // ↑DBアクセス----------------------------------------------------- // 戻り値を設定 testReturn.Obj = ds; }
/// <summary> /// To Delete database records /// </summary> /// <param name="shardMap"></param> /// <param name="credentialsConnectionString"></param> public static void ExecuteDataDependentRoutingQueryForDelete(RangeShardMap <int> shardMap) { TestParameterValue testParameterValue = new TestParameterValue( "DataDependentRouting", "ExecuteDataDependentRouting", "Delete", "SqlDbWithDataDependent" + "%" + "individual" + "%" + "-", new MyUserInfo("DataDependentRouting", "DataDependentRouting")); // 情報の設定 testParameterValue.CustomerId = MultiShardConfiguration.customerId; // 分離レベルの設定 DbEnum.IsolationLevelEnum iso = DbEnum.IsolationLevelEnum.DefaultTransaction; // B層を生成 LayerB myBusiness = new LayerB(); // 業務処理を実行 TestReturnValue testReturnValue = (TestReturnValue)myBusiness.DoBusinessLogic( (BaseParameterValue)testParameterValue, iso); Console.WriteLine("Deleted order for customer ID: {0}", testParameterValue.CustomerId); }
public void _2_SelectAll_XX( string screenId, string controlId, string methodName, string actionType, string userName, string ipAddress, string isolationLevel, string orderCol, string orderSeq) { // 引数クラスを生成 // 下位(B・D層)は、テスト クラスを流用する TestParameterValue testParameterValue = new TestParameterValue( screenId, controlId, methodName, actionType, new MyUserInfo(userName, ipAddress)); testParameterValue.OrderColumn = orderCol; testParameterValue.OrderSequence = orderSeq; // 戻り値 TestReturnValue testReturnValue = null;; // B層呼出し LayerB layerB = new LayerB(); try { testReturnValue = (TestReturnValue)layerB.DoBusinessLogic( testParameterValue, this.SelectIsolationLevel(isolationLevel)); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } // 戻り値検証。 Assert.AreEqual(testReturnValue.ErrorFlag, false); switch (methodName) { case "SelectAll_DT": DataTable dt = (DataTable)testReturnValue.Obj; Assert.GreaterOrEqual(dt.Rows.Count, 1); break; case "SelectAll_DS": DataSet ds = (DataSet)testReturnValue.Obj; Assert.AreEqual(ds.Tables.Count, 1); Assert.GreaterOrEqual(ds.Tables[0].Rows.Count, 1); break; case "SelectAll_DR": DataTable dataTable = (DataTable)testReturnValue.Obj; Assert.GreaterOrEqual(dataTable.Rows.Count, 1); break; case "SelectAll_DSQL": DataTable table = (DataTable)testReturnValue.Obj; Assert.GreaterOrEqual(table.Rows.Count, 1); break; default: break; } }
public void _5_Delete( string screenId, string controlId, string actionType, string userName, string ipAddress, string isolationLevel, string shipperID) { string methodName = "Delete"; // 引数クラスを生成 // 下位(B・D層)は、テスト クラスを流用する TestParameterValue testParameterValue = new TestParameterValue( screenId, controlId, methodName, actionType, new MyUserInfo(userName, ipAddress)); // 情報の設定 testParameterValue.ShipperID = int.Parse(shipperID); // 戻り値 TestReturnValue testReturnValue = null; // B層呼出し LayerB layerB = new LayerB(); try { testReturnValue = (TestReturnValue)layerB.DoBusinessLogic( testParameterValue, this.SelectIsolationLevel(isolationLevel)); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } // 戻り値検証。 Assert.AreEqual(testReturnValue.ErrorFlag, false); Assert.Contains(Convert.ToInt32(testReturnValue.Obj), (new int[] { 0, 1 })); }
/// <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="parameterValue">引数クラス</param> private void UOC_Insert(BaseParameterValue parameterValue) { // 引数クラスをアップキャスト TestParameterValue testParameter = (TestParameterValue)parameterValue; // 戻り値クラスを生成 TestReturnValue testReturn = new TestReturnValue(); // ↓業務処理----------------------------------------------------- // データアクセス クラスを生成する DaoSuppliers daoSuppliers = new DaoSuppliers(this.GetDam()); // 1件挿入 //daoSuppliers.PK_SupplierID = testParameter.field1; daoSuppliers.CompanyName = testParameter.field2; daoSuppliers.ContactName = testParameter.field3; daoSuppliers.ContactTitle = testParameter.field4; daoSuppliers.Address = testParameter.field5; daoSuppliers.City = testParameter.field6; daoSuppliers.Region = testParameter.field7; daoSuppliers.PostalCode = testParameter.field8; daoSuppliers.Country = testParameter.field9; daoSuppliers.Phone = testParameter.field10; daoSuppliers.Fax = testParameter.field11; daoSuppliers.HomePage = testParameter.field12; testReturn.obj = daoSuppliers.S1_Insert(); // ↑業務処理----------------------------------------------------- // 戻り値クラスをダウンキャストして戻す this.ReturnValue = (BaseReturnValue)testReturn; }
/// <summary>業務処理を実装</summary> /// <param name="parameterValue">引数クラス</param> private void UOC_Insert(BaseParameterValue parameterValue) { // 引数クラスをアップキャスト TestParameterValue testParameter = (TestParameterValue)parameterValue; // 戻り値クラスを生成 TestReturnValue testReturn = new TestReturnValue(); // ↓業務処理----------------------------------------------------- // データアクセス クラスを生成する DaoCategories daoCategories = new DaoCategories(this.GetDam()); // 1件挿入 //daoCategories.PK_CategoryID = testParameter.field1; daoCategories.CategoryName = testParameter.field2; daoCategories.Description = testParameter.field3; //daoCategories.Picture = testParameter.field4; // インサート testReturn.obj = daoCategories.D1_Insert(); // ↑業務処理----------------------------------------------------- // 戻り値クラスをダウンキャストして戻す this.ReturnValue = (BaseReturnValue)testReturn; }
/// <summary>業務処理を実装</summary> /// <param name="parameterValue">引数クラス</param> private void UOC_SelectAll(BaseParameterValue parameterValue) { // 引数クラスをアップキャスト TestParameterValue testParameter = (TestParameterValue)parameterValue; // 戻り値クラスを生成 TestReturnValue testReturn = new TestReturnValue(); // ↓業務処理----------------------------------------------------- // データアクセス クラスを生成する DaoProducts daoProducts = new DaoProducts(this.GetDam()); // 全件取得 DataTable dt = new DataTable(); daoProducts.D2_Select(dt); // 戻り値を戻す testReturn.dt = dt; // ↑業務処理----------------------------------------------------- // 戻り値クラスをダウンキャストして戻す this.ReturnValue = (BaseReturnValue)testReturn; }
public void _1_SelectCount( string screenId, string controlId, string actionType, string userName, string ipAddress, string isolationLevel) { string methodName = "SelectCount"; // 引数クラスを生成 // 下位(B・D層)は、テスト クラスを流用する TestParameterValue testParameterValue = new TestParameterValue( screenId, controlId, methodName, actionType, new MyUserInfo(userName, ipAddress)); // 戻り値 TestReturnValue testReturnValue = null; // B層呼出し LayerB layerB = new LayerB(); try { testReturnValue = (TestReturnValue)layerB.DoBusinessLogic( testParameterValue, this.SelectIsolationLevel(isolationLevel)); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } // 戻り値検証。 Assert.AreEqual(testReturnValue.ErrorFlag, false); Assert.AreEqual(StringChecker.IsNumbers(testReturnValue.Obj.ToString()), true); }
/// <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>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="parameterValue">引数クラス</param> private void UOC_Update(BaseParameterValue parameterValue) { // 引数クラスをアップキャスト TestParameterValue testParameter = (TestParameterValue)parameterValue; // 戻り値クラスを生成 TestReturnValue testReturn = new TestReturnValue(); // ↓業務処理----------------------------------------------------- // データアクセス クラスを生成する DaoCategories daoCategories = new DaoCategories(this.GetDam()); // n件更新 // 更新値設定 if (testParameter.field2_ForUpd.ToString().Trim() == "") { } else { daoCategories.Set_CategoryName_forUPD = testParameter.field2_ForUpd; } if (testParameter.field3_ForUpd.ToString().Trim() == "") { } else { daoCategories.Set_Description_forUPD = testParameter.field3_ForUpd; } // 検索条件設定 if (testParameter.field1_ForSearch.ToString().Trim() == "") { } else { daoCategories.PK_CategoryID = testParameter.field1_ForSearch; } if (testParameter.field2_ForSearch.ToString().Trim() == "") { } else { daoCategories.CategoryName = testParameter.field2_ForSearch; } // アップデート testReturn.obj = daoCategories.D3_Update(); // ↑業務処理----------------------------------------------------- // 戻り値クラスをダウンキャストして戻す this.ReturnValue = (BaseReturnValue)testReturn; }
/// <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 "common": // 共通Daoを使用する。 // 共通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; case "generate": // 自動生成Daoを使用する。 // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // 共通Daoを実行 // 戻り値を設定 testReturn.Obj = genDao.D5_SelCnt(); break; default: // 個別Daoを使用する。 LayerD myDao = new LayerD(this.GetDam()); myDao.SelectCount(testParameter, testReturn); break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(testParameter); }
public async Task <HttpResponseMessage> SelectAll_DR([FromForm] WebApiParams param) { // Claimを取得する。 string userName, roles, scopes, ipAddress; MyBaseAsyncApiController.GetClaims(out userName, out roles, out scopes, out ipAddress); // 引数クラスを生成 // 下位(B・D層)は、テスト クラスを流用する TestParameterValue testParameterValue = new TestParameterValue( "JsonController", "SelectAll_DR", "SelectAll_DR", param.ddlDap + "%" + param.ddlMode1 + "%" + param.ddlMode2 + "%" + param.ddlExRollback, new MyUserInfo(userName, ipAddress)); // 非同期呼び出し AsyncRetVal asyncRetVal = await this.Call("testInProcess", testParameterValue); object ret = null; if (asyncRetVal.WsErrorInfo != null) { // ランタイムエラー ret = new { ExceptionMSG = asyncRetVal.WsErrorInfo }; } else { TestReturnValue testReturnValue = (TestReturnValue)asyncRetVal.ReturnValue; if (testReturnValue.ErrorFlag == true) { // 結果(業務続行可能なエラー) asyncRetVal.WsErrorInfo = new Dictionary <string, string>(); asyncRetVal.WsErrorInfo["ErrorMessageID"] = testReturnValue.ErrorMessageID; asyncRetVal.WsErrorInfo["ErrorMessage"] = testReturnValue.ErrorMessage; asyncRetVal.WsErrorInfo["ErrorInfo"] = testReturnValue.ErrorInfo; ret = new { ErrorMSG = asyncRetVal.WsErrorInfo }; } else { // 結果(正常系) DataTable dt = (DataTable)testReturnValue.Obj; DataToDictionary d2d = new DataToDictionary( new Dictionary <string, string> { { "c1", "ShipperID" }, { "c2", "CompanyName" }, { "c3", "Phone" } }, "", ""); ret = new { Message = "", Result = d2d.DataTableToDictionaryList(dt) }; } } return(Request.CreateResponse(HttpStatusCode.OK, ret)); }
public async Task <HttpResponseMessage> Select(WebApiParams param) { // Claimを取得する。 string userName, roles, scopes, ipAddress; MyBaseAsyncApiController.GetClaims(out userName, out roles, out scopes, out ipAddress); // 引数クラスを生成 // 下位(B・D層)は、テスト クラスを流用する TestParameterValue testParameterValue = new TestParameterValue( "JsonController", "Select", "Select", param.ddlDap + "%" + param.ddlMode1 + "%" + param.ddlMode2 + "%" + param.ddlExRollback, new MyUserInfo(userName, ipAddress)); testParameterValue.ShipperID = param.Shipper.ShipperID; // 非同期呼び出し AsyncRetVal asyncRetVal = await this.Call("testInProcess", testParameterValue); object ret = null; if (asyncRetVal.WsErrorInfo != null) { // ランタイムエラー ret = new { ExceptionMSG = asyncRetVal.WsErrorInfo }; } else { TestReturnValue testReturnValue = (TestReturnValue)asyncRetVal.ReturnValue; if (testReturnValue.ErrorFlag == true) { // 結果(業務続行可能なエラー) asyncRetVal.WsErrorInfo = new Dictionary <string, string>(); asyncRetVal.WsErrorInfo["ErrorMessageID"] = testReturnValue.ErrorMessageID; asyncRetVal.WsErrorInfo["ErrorMessage"] = testReturnValue.ErrorMessage; asyncRetVal.WsErrorInfo["ErrorInfo"] = testReturnValue.ErrorInfo; ret = new { ErrorMSG = asyncRetVal.WsErrorInfo }; } else { // 結果(正常系) Dictionary <string, string> dic = new Dictionary <string, string>() { { "ShipperID", testReturnValue.ShipperID.ToString() }, { "CompanyName", testReturnValue.CompanyName }, { "Phone", testReturnValue.Phone } }; ret = new { Message = "", Result = dic }; } } return(Request.CreateResponse(HttpStatusCode.OK, ret)); }
/// <summary>Select data by customerId</summary> /// <param name="testParameter">testParameter</param> private void UOC_SelectByCustomer(TestParameterValue testParameter) { TestReturnValue testReturn = new TestReturnValue(); this.ReturnValue = testReturn; LayerD myDao = new LayerD(this.GetDam()); myDao.SelectByCustomer(testParameter, testReturn); }
/// <summary>Delete the specific customers data</summary> /// <param name="testParameter">testParameter</param> private void UOC_Delete(TestParameterValue testParameter) { TestReturnValue testReturn = new TestReturnValue(); this.ReturnValue = testReturn; LayerD myDao = new LayerD(this.GetDam()); myDao.Delete(testParameter, testReturn); }
/// <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>業務処理を実装</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>業務処理を実装</summary> /// <param name="testParameter">引数クラス</param> private void UOC_SelectAll_DR(TestParameterValue testParameter) { // 戻り値クラスを生成して、事前に戻り値に設定しておく。 TestReturnValue testReturn = new TestReturnValue(); this.ReturnValue = testReturn; LayerD myDao = new LayerD(this.GetDam()); myDao.SelectAll_DR(testParameter, testReturn); }
public async Task <ContentResult> Update(WebApiParams param) { // Claimを取得する。 string userName, roles, scopes, ipAddress; MyBaseAsyncApiController.GetClaims(out userName, out roles, out scopes, out ipAddress); // 引数クラスを生成 // 下位(B・D層)は、テスト クラスを流用する TestParameterValue testParameterValue = new TestParameterValue( "JsonController", "Update", "Update", param.ddlDap + "%" + param.ddlMode1 + "%" + param.ddlMode2 + "%" + param.ddlExRollback, new MyUserInfo(userName, ipAddress)); testParameterValue.ShipperID = param.shipper.ShipperID; testParameterValue.CompanyName = param.shipper.CompanyName; testParameterValue.Phone = param.shipper.Phone; // 非同期呼び出し AsyncRetVal asyncRetVal = await this.Call("testInProcess", testParameterValue); object ret = null; if (asyncRetVal.WsErrorInfo != null) { // ランタイムエラー ret = new { ExceptionMSG = asyncRetVal.WsErrorInfo }; } else { TestReturnValue testReturnValue = (TestReturnValue)asyncRetVal.ReturnValue; if (testReturnValue.ErrorFlag == true) { // 結果(業務続行可能なエラー) asyncRetVal.WsErrorInfo = new Dictionary <string, string>(); asyncRetVal.WsErrorInfo["ErrorMessageID"] = testReturnValue.ErrorMessageID; asyncRetVal.WsErrorInfo["ErrorMessage"] = testReturnValue.ErrorMessage; asyncRetVal.WsErrorInfo["ErrorInfo"] = testReturnValue.ErrorInfo; ret = new { ErrorMSG = asyncRetVal.WsErrorInfo }; } else { // 結果(正常系) string message = testReturnValue.Obj.ToString() + "件更新"; ret = new { Message = message }; } } return(this.Content(JsonConvert.SerializeObject(ret, JSS))); }
/// <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); }
public async Task <ContentResult> SelectAll_DSQL([FromForm] WebApiParams param) { // Claimを取得する。 string userName, roles, scopes, ipAddress; MyBaseAsyncApiController.GetClaims(out userName, out roles, out scopes, out ipAddress); // 引数クラスを生成 // 下位(B・D層)は、テスト クラスを流用する TestParameterValue testParameterValue = new TestParameterValue( "JsonController", "SelectAll_DSQL", "SelectAll_DSQL", param.ddlDap + "%" + param.ddlMode1 + "%" + param.ddlMode2 + "%" + param.ddlExRollback, new MyUserInfo(userName, ipAddress)); testParameterValue.OrderColumn = param.orderColumn; testParameterValue.OrderSequence = param.orderSequence; // 非同期呼び出し AsyncRetVal asyncRetVal = await this.Call("testInProcess", testParameterValue); object ret = null; if (asyncRetVal.WsErrorInfo != null) { // ランタイムエラー ret = new { ExceptionMSG = asyncRetVal.WsErrorInfo }; } else { TestReturnValue testReturnValue = (TestReturnValue)asyncRetVal.ReturnValue; if (testReturnValue.ErrorFlag == true) { // 結果(業務続行可能なエラー) asyncRetVal.WsErrorInfo = new Dictionary <string, string>(); asyncRetVal.WsErrorInfo["ErrorMessageID"] = testReturnValue.ErrorMessageID; asyncRetVal.WsErrorInfo["ErrorMessage"] = testReturnValue.ErrorMessage; asyncRetVal.WsErrorInfo["ErrorInfo"] = testReturnValue.ErrorInfo; ret = new { ErrorMSG = asyncRetVal.WsErrorInfo }; } else { // 結果(正常系) DataTable dt = (DataTable)testReturnValue.Obj; DataToDictionary d2d = new DataToDictionary(null, null, null); ret = new { Message = "", Result = d2d.DataTableToDictionaryList(dt) }; } } return(this.Content(JsonConvert.SerializeObject(ret, JSS))); }
/// <summary> /// To create database records /// </summary> /// <param name="shardMap"></param> /// <param name="credentialsConnectionString"></param> public static void ExecuteDataDependentRoutingQuery(RangeShardMap <int> shardMap) { // we just choose a random key out of the range that is mapped. Here we assume that the ranges // start at 0, are contiguous, and are bounded (i.e. there is no range where HighIsMax == true) int currentMaxHighKey = shardMap.GetMappings().Max(m => m.Value.High); MultiShardConfiguration.customerId = GetCustomerId(currentMaxHighKey); string customerName = shardCustomerNames[randCustomer.Next(shardCustomerNames.Length)]; int regionId = 0; int productId = 0; TestParameterValue testParameterValue = new TestParameterValue( "DataDependentRouting", "ExecuteDataDependentRouting", "Insert", "SqlDbWithDataDependent" + "%" + "individual" + "%" + "-", new MyUserInfo("DataDependentRouting", "DataDependentRouting")); // 情報の設定 testParameterValue.CustomerId = MultiShardConfiguration.customerId; testParameterValue.Name = customerName; testParameterValue.RegionId = regionId; testParameterValue.ProductId = productId; // 分離レベルの設定 DbEnum.IsolationLevelEnum iso = DbEnum.IsolationLevelEnum.DefaultTransaction; // B層を生成 LayerB myBusiness = new LayerB(); // 業務処理を実行 TestReturnValue testReturnValue = (TestReturnValue)myBusiness.DoBusinessLogic( (BaseParameterValue)testParameterValue, iso); string strErrorMsg = ""; if (testReturnValue.ErrorFlag == true) { // 結果(業務続行可能なエラー) strErrorMsg = "ErrorMessageID:" + testReturnValue.ErrorMessageID + "\r\n"; strErrorMsg += "ErrorMessage:" + testReturnValue.ErrorMessage + "\r\n"; strErrorMsg += "ErrorInfo:" + testReturnValue.ErrorInfo + "\r\n"; Console.WriteLine("Inserted failed for customer ID: {0},{1}", testParameterValue.CustomerId, strErrorMsg); } else { // 結果(正常系) Console.WriteLine("Inserted order for customer ID: {0}", testParameterValue.CustomerId); } }
public async Task <ActionResult> SelectAll_DSQL(CrudViweModel model) { if (ModelState.IsValid) { // 引数クラスを生成。下位(B・D層)は、テスト クラスを流用する TestParameterValue testParameterValue = new TestParameterValue(this.ControllerName, "-", this.ActionName, model.DdlDap + "%" + model.DdlMode1 + "%" + model.DdlMode2 + "%" + model.DdlExRollback, this.UserInfo); // 動的SQLの要素を設定 testParameterValue.OrderColumn = model.DdlOrderColumn; testParameterValue.OrderSequence = model.DdlOrderSequence; // B層呼出し+都度コミット LayerB layerB = new LayerB(); TestReturnValue testReturnValue = (TestReturnValue)await layerB.DoBusinessLogicAsync(testParameterValue, this.SelectIsolationLevel(model.DdlIso)); // 結果表示するメッセージ string message = ""; if (testReturnValue.ErrorFlag == true) { // 結果(業務続行可能なエラー) message = "ErrorMessageID:" + testReturnValue.ErrorMessageID + ";"; message += "ErrorMessage:" + testReturnValue.ErrorMessage + ";"; message += "ErrorInfo:" + testReturnValue.ErrorInfo; // Ajax.BeginFormでは、UpdateTargetIdで指定した // ターゲット以外を更新する場合、JavaScriptでの対応が必要。 // #ここではjQueryを使用している。 string scriptText = "$('#lblMessage').text('" + message + "');"; return(JavaScript(scriptText)); } else { // 結果(正常系) model.shippers = new DsNorthwind.ShippersDataTable(); DataTable dt = (DataTable)testReturnValue.Obj; foreach (DataRow row in dt.Rows) { DsNorthwind.ShippersRow srow = model.shippers.NewShippersRow(); srow.ShipperID = int.Parse(row[0].ToString()); srow.CompanyName = row[1].ToString(); srow.Phone = row[2].ToString(); model.shippers.Rows.Add(srow); } } } // Ajax.BeginFormでは、以下のように記述することで部分更新が可能。 return(PartialView("_ChartView", model)); }
/// <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", typeof(string)); dt.Columns.Add("c2", typeof(string)); dt.Columns.Add("c3", typeof(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>業務処理を実装</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> /// <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>一覧を返す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>業務処理を実装</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_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>業務処理を実装</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>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_DS(TestParameterValue testParameter) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 TestReturnValue testReturn = new TestReturnValue(); this.ReturnValue = testReturn; // ↓業務処理----------------------------------------------------- DataSet ds = 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; } // 戻り値 ds ds = new DataSet(); // 共通Daoを実行 cmnDao.ExecSelectFill_DS(ds); // 戻り値を設定 testReturn.Obj = ds; break; case "generate": // 自動生成Daoを使用する。 // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // 戻り値 ds ds = new DataSet(); ds.Tables.Add(new DataTable()); // 自動生成Daoを実行 genDao.D2_Select(ds.Tables[0]); // 戻り値を設定 testReturn.Obj = ds; break; default: // 個別Daoを使用する。 LayerD myDao = new LayerD(this.GetDam()); myDao.SelectAll_DS(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>業務処理を実装</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>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; }