Mercurial > pub > bltoolkit
comparison HowTo/Data/Parameter.cs @ 0:f990fcb411a9
Копия текущей версии из github
| author | cin |
|---|---|
| date | Thu, 27 Mar 2014 21:46:09 +0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:f990fcb411a9 |
|---|---|
| 1 using System; | |
| 2 using System.Data; | |
| 3 | |
| 4 using NUnit.Framework; | |
| 5 | |
| 6 using BLToolkit.Data; | |
| 7 | |
| 8 namespace HowTo.Data | |
| 9 { | |
| 10 using DataAccess; | |
| 11 | |
| 12 [TestFixture] | |
| 13 public class Parameter | |
| 14 { | |
| 15 [Test] | |
| 16 public void AssignParameterTest() | |
| 17 { | |
| 18 using (DbManager db = new DbManager()) | |
| 19 { | |
| 20 int n = db | |
| 21 .SetCommand("SELECT @par1 + @par2", | |
| 22 db./*[a]*/Parameter/*[/a]*/("@par1", 2), | |
| 23 db./*[a]*/Parameter/*[/a]*/("@par2", 2)) | |
| 24 .ExecuteScalar<int>(); | |
| 25 | |
| 26 Assert.AreEqual(4, n); | |
| 27 } | |
| 28 } | |
| 29 | |
| 30 [Test] | |
| 31 public void SetValueTest() | |
| 32 { | |
| 33 using (DbManager db = new DbManager()) | |
| 34 { | |
| 35 db.SetCommand("SELECT @par * 2", | |
| 36 db./*[a]*/Parameter/*[/a]*/("@par", DbType.Int32)); | |
| 37 | |
| 38 db./*[a]*/Parameter("@par").Value/*[/a]*/ = 2; | |
| 39 | |
| 40 Assert.AreEqual(4, db.ExecuteScalar<int>()); | |
| 41 } | |
| 42 } | |
| 43 | |
| 44 [Test] | |
| 45 public void ReturnValueTest() | |
| 46 { | |
| 47 using (DbManager db = new DbManager()) | |
| 48 { | |
| 49 /* | |
| 50 * CREATE Function Scalar_ReturnParameter() | |
| 51 * RETURNS int | |
| 52 * AS | |
| 53 * BEGIN | |
| 54 * RETURN 12345 | |
| 55 * END | |
| 56 */ | |
| 57 db | |
| 58 .SetSpCommand("Scalar_ReturnParameter") | |
| 59 .ExecuteNonQuery(); | |
| 60 | |
| 61 int n = (int)db./*[a]*/Parameter("@RETURN_VALUE").Value/*[/a]*/; | |
| 62 | |
| 63 Assert.AreEqual(12345, n); | |
| 64 } | |
| 65 } | |
| 66 | |
| 67 [Test] | |
| 68 public void ReturnValueTest2() | |
| 69 { | |
| 70 using (DbManager db = new DbManager()) | |
| 71 { | |
| 72 int n = db | |
| 73 .SetSpCommand("Scalar_ReturnParameter") | |
| 74 .ExecuteScalar<int>(ScalarSourceType.ReturnValue); | |
| 75 | |
| 76 Assert.AreEqual(12345, n); | |
| 77 } | |
| 78 } | |
| 79 | |
| 80 [Test] | |
| 81 public void OutputParameterTest() | |
| 82 { | |
| 83 using (DbManager db = new DbManager()) | |
| 84 { | |
| 85 /* | |
| 86 * CREATE Procedure Scalar_OutputParameter | |
| 87 * @outputInt int = 0 output, | |
| 88 * @outputString varchar(50) = '' output | |
| 89 * AS | |
| 90 * BEGIN | |
| 91 * SET @outputInt = 12345 | |
| 92 * SET @outputString = '54321' | |
| 93 * END | |
| 94 */ | |
| 95 | |
| 96 db | |
| 97 .SetSpCommand("Scalar_OutputParameter", | |
| 98 db./*[a]*/OutputParameter/*[/a]*/("@outputInt", 1), | |
| 99 db./*[a]*/OutputParameter/*[/a]*/("@outputString", "1")) | |
| 100 .ExecuteNonQuery(); | |
| 101 | |
| 102 Assert.AreEqual(12345, (int) db./*[a]*/Parameter("@outputInt"). Value/*[/a]*/); | |
| 103 Assert.AreEqual("54321", (string)db./*[a]*/Parameter("@outputString").Value/*[/a]*/); | |
| 104 } | |
| 105 } | |
| 106 | |
| 107 [Test] | |
| 108 public void OutputParameterAsReturnValueTest() | |
| 109 { | |
| 110 using (DbManager db = new DbManager()) | |
| 111 { | |
| 112 string returnValue = db | |
| 113 .SetSpCommand("Scalar_OutputParameter") | |
| 114 .ExecuteScalar<string>(/*[a]*/ScalarSourceType.OutputParameter/*[/a]*/, /*[a]*/"outputString"/*[/a]*/); | |
| 115 | |
| 116 Assert.AreEqual("54321", returnValue); | |
| 117 } | |
| 118 } | |
| 119 | |
| 120 [Test] | |
| 121 public void CreateParametersTest() | |
| 122 { | |
| 123 Person person = new Person(); | |
| 124 | |
| 125 person.FirstName = "John"; | |
| 126 person.LastName = "Smith"; | |
| 127 person.Gender = Gender.Male; | |
| 128 | |
| 129 using (DbManager db = new DbManager()) | |
| 130 { | |
| 131 db.BeginTransaction(); | |
| 132 | |
| 133 // Prepare command. | |
| 134 // | |
| 135 int id = db | |
| 136 .SetSpCommand("Person_Insert", | |
| 137 db./*[a]*/CreateParameters/*[/a]*/(person)) | |
| 138 .ExecuteScalar<int>(); | |
| 139 | |
| 140 // Check the result. | |
| 141 // | |
| 142 person = db | |
| 143 .SetCommand( | |
| 144 "SELECT * FROM Person WHERE PersonID = @id", | |
| 145 db.Parameter("@id", id)) | |
| 146 .ExecuteObject<Person>(); | |
| 147 | |
| 148 Assert.IsNotNull(person); | |
| 149 | |
| 150 // Cleanup. | |
| 151 // | |
| 152 db | |
| 153 .SetCommand( | |
| 154 "DELETE FROM Person WHERE PersonID = @id", | |
| 155 db.Parameter("@id", id)) | |
| 156 .ExecuteNonQuery(); | |
| 157 | |
| 158 db.CommitTransaction(); | |
| 159 } | |
| 160 } | |
| 161 } | |
| 162 } |
