SqlCommandBuilderTest.cs 73 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879
  1. // SqlCommandBuilderTest.cs - NUnit Test Cases for testing the
  2. // SqlCommandBuilder class
  3. //
  4. // Authors:
  5. // Sureshkumar T ([email protected])
  6. //
  7. // Copyright (c) 2004 Novell Inc., and the individuals listed on the
  8. // ChangeLog entries.
  9. //
  10. //
  11. // Permission is hereby granted, free of charge, to any person
  12. // obtaining a copy of this software and associated documentation
  13. // files (the "Software"), to deal in the Software without
  14. // restriction, including without limitation the rights to use, copy,
  15. // modify, merge, publish, distribute, sublicense, and/or sell copies
  16. // of the Software, and to permit persons to whom the Software is
  17. // furnished to do so, subject to the following conditions:
  18. //
  19. // The above copyright notice and this permission notice shall be
  20. // included in all copies or substantial portions of the Software.
  21. //
  22. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  23. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  24. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  25. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  26. // BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  27. // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  28. // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  29. // SOFTWARE.
  30. using System;
  31. using System.Data;
  32. using System.Data.Common;
  33. using System.Data.SqlClient;
  34. #if NET_2_0
  35. using System.Data.SqlTypes;
  36. #endif
  37. using Mono.Data;
  38. using NUnit.Framework;
  39. namespace MonoTests.System.Data
  40. {
  41. [TestFixture]
  42. [Category ("sqlserver")]
  43. public class SqlCommandBuilderTest
  44. {
  45. [Test]
  46. public void GetInsertCommand1 ()
  47. {
  48. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  49. ConnectionManager.Singleton.OpenConnection ();
  50. SqlCommand cmd = null;
  51. try {
  52. string selectQuery = "select id, fname, lname " +
  53. "from employee where id = 1";
  54. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  55. DataSet ds = new DataSet ();
  56. da.Fill (ds, "IntTest");
  57. Assert.AreEqual (1, ds.Tables.Count);
  58. SqlCommandBuilder cb;
  59. cb = new SqlCommandBuilder (da);
  60. cmd = cb.GetInsertCommand ();
  61. #if NET_2_0
  62. Assert.AreEqual ("INSERT INTO [employee] ([id], " +
  63. "[fname], [lname]) VALUES (@p1, @p2, @p3)",
  64. cmd.CommandText, "#A1");
  65. #else
  66. Assert.AreEqual ("INSERT INTO employee( id , " +
  67. "fname , lname ) VALUES ( @p1 , @p2 , @p3 )",
  68. cmd.CommandText, "#A1");
  69. #endif
  70. Assert.AreSame (conn, cmd.Connection, "#A2");
  71. AssertInsertParameters (cmd, false, "#A3:");
  72. Assert.AreSame (cmd, cb.GetInsertCommand (), "#A4");
  73. cb.RefreshSchema ();
  74. cb.QuotePrefix = "\"";
  75. cmd = cb.GetInsertCommand ();
  76. #if NET_2_0
  77. Assert.AreEqual ("INSERT INTO \"employee] (\"id], " +
  78. "\"fname], \"lname]) VALUES (@p1, @p2, @p3)",
  79. cmd.CommandText, "#B1");
  80. #else
  81. Assert.AreEqual ("INSERT INTO \"employee( \"id , " +
  82. "\"fname , \"lname ) VALUES ( @p1 , @p2 , @p3 )",
  83. cmd.CommandText, "#B1");
  84. #endif
  85. Assert.AreSame (conn, cmd.Connection, "#B2");
  86. AssertInsertParameters (cmd, false, "#B3:");
  87. Assert.AreSame (cmd, cb.GetInsertCommand (), "#B4");
  88. cb.RefreshSchema ();
  89. #if NET_2_0
  90. cb.QuoteSuffix = "\"";
  91. #else
  92. cb.QuoteSuffix = "´";
  93. #endif
  94. cmd = cb.GetInsertCommand ();
  95. #if NET_2_0
  96. Assert.AreEqual ("INSERT INTO \"employee\" (\"id\", "
  97. + "\"fname\", \"lname\") VALUES (@p1, @p2, @p3)",
  98. cmd.CommandText, "#C1");
  99. #else
  100. Assert.AreEqual ("INSERT INTO \"employee´( \"id´ , " +
  101. "\"fname´ , \"lname´ ) VALUES ( @p1 , @p2 , @p3 )",
  102. cmd.CommandText, "#C1");
  103. #endif
  104. Assert.AreSame (conn, cmd.Connection, "#C2");
  105. AssertInsertParameters (cmd, false, "#C3");
  106. Assert.AreSame (cmd, cb.GetInsertCommand (), "#C4");
  107. } finally {
  108. if (cmd != null)
  109. cmd.Dispose ();
  110. ConnectionManager.Singleton.CloseConnection ();
  111. }
  112. }
  113. [Test]
  114. public void GetInsertCommand1_Expression ()
  115. {
  116. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  117. ConnectionManager.Singleton.OpenConnection ();
  118. SqlCommand cmd = null;
  119. try {
  120. string selectQuery = "select id, fname, lname, " +
  121. "id+1 as next_id from employee where " +
  122. "id = 1";
  123. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  124. DataSet ds = new DataSet ();
  125. da.Fill (ds, "IntTest");
  126. Assert.AreEqual (1, ds.Tables.Count);
  127. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  128. cmd = cb.GetInsertCommand ();
  129. #if NET_2_0
  130. Assert.AreEqual ("INSERT INTO [employee] " +
  131. "([id], [fname], [lname]) VALUES " +
  132. "(@p1, @p2, @p3)", cmd.CommandText, "#1");
  133. #else
  134. Assert.AreEqual ("INSERT INTO employee( id , " +
  135. "fname , lname ) VALUES ( @p1 , @p2 , " +
  136. "@p3 )", cmd.CommandText, "#1");
  137. #endif
  138. Assert.AreSame (conn, cmd.Connection, "#2");
  139. AssertInsertParameters (cmd, false, "#3:");
  140. } finally {
  141. if (cmd != null)
  142. cmd.Dispose ();
  143. ConnectionManager.Singleton.CloseConnection ();
  144. }
  145. }
  146. #if NET_2_0
  147. [Test] // GetInsertCommand (Boolean)
  148. public void GetInsertCommand2 ()
  149. {
  150. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  151. ConnectionManager.Singleton.OpenConnection ();
  152. SqlCommand cmd = null;
  153. try {
  154. string selectQuery = "select id, fname, lname " +
  155. "from employee where id = 1";
  156. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  157. DataSet ds = new DataSet ();
  158. da.Fill (ds, "IntTest");
  159. Assert.AreEqual (1, ds.Tables.Count);
  160. SqlCommandBuilder cb;
  161. cb = new SqlCommandBuilder (da);
  162. cmd = cb.GetInsertCommand (true);
  163. Assert.AreEqual ("INSERT INTO [employee] ([id], " +
  164. "[fname], [lname]) VALUES (@id, @fname, " +
  165. "@lname)", cmd.CommandText, "#A1");
  166. Assert.AreSame (conn, cmd.Connection, "#A2");
  167. AssertInsertParameters (cmd, true, "#A3:");
  168. cmd = cb.GetInsertCommand (false);
  169. Assert.AreEqual ("INSERT INTO [employee] ([id], " +
  170. "[fname], [lname]) VALUES (@id, @fname, " +
  171. "@lname)", cmd.CommandText, "#B1");
  172. Assert.AreSame (conn, cmd.Connection, "#B2");
  173. AssertInsertParameters (cmd, true, "#B3:");
  174. cb = new SqlCommandBuilder (da);
  175. cmd = cb.GetInsertCommand (false);
  176. Assert.AreEqual ("INSERT INTO [employee] ([id], " +
  177. "[fname], [lname]) VALUES (@p1, @p2, @p3)",
  178. cmd.CommandText, "#C1");
  179. Assert.AreSame (conn, cmd.Connection, "#C2");
  180. AssertInsertParameters (cmd, false, "#C3:");
  181. cmd = cb.GetInsertCommand (true);
  182. Assert.AreEqual ("INSERT INTO [employee] ([id], " +
  183. "[fname], [lname]) VALUES (@id, @fname, " +
  184. "@lname)", cmd.CommandText, "#D1");
  185. Assert.AreSame (conn, cmd.Connection, "#D2");
  186. AssertInsertParameters (cmd, true, "#D3:");
  187. } finally {
  188. if (cmd != null)
  189. cmd.Dispose ();
  190. ConnectionManager.Singleton.CloseConnection ();
  191. }
  192. }
  193. #endif
  194. [Test] // GetUpdateCommand ()
  195. public void GetUpdateCommand1 ()
  196. {
  197. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  198. SqlCommand cmd = null;
  199. try {
  200. string selectQuery = "select id, fname, lname, " +
  201. "id+1 as next_id from employee where " +
  202. "id = 3 and lname = 'A' and fname = 'B'";
  203. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  204. DataSet ds = new DataSet ();
  205. da.Fill (ds, "IntTest");
  206. Assert.AreEqual (1, ds.Tables.Count);
  207. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  208. cmd = cb.GetUpdateCommand ();
  209. #if NET_2_0
  210. Assert.AreEqual ("UPDATE [employee] SET [id] = @p1, " +
  211. "[fname] = @p2, [lname] = @p3 WHERE (([id] = @p4) " +
  212. "AND ([fname] = @p5) AND ((@p6 = 1 " +
  213. "AND [lname] IS NULL) OR ([lname] = @p7)))",
  214. cmd.CommandText, "#A1");
  215. #else
  216. Assert.AreEqual ("UPDATE employee SET id = @p1 , " +
  217. "fname = @p2 , lname = @p3 WHERE ( (id = @p4) " +
  218. "AND ((@p5 = 1 AND fname IS NULL) OR " +
  219. "(fname = @p6)) AND ((@p7 = 1 AND " +
  220. "lname IS NULL) OR (lname = @p8)) )",
  221. cmd.CommandText, "#A1");
  222. #endif
  223. Assert.AreSame (conn, cmd.Connection, "#A2");
  224. AssertUpdateParameters (cmd, false, "#A3:");
  225. Assert.AreSame (cmd, cb.GetUpdateCommand (), "#A4");
  226. cb.RefreshSchema ();
  227. cb.QuotePrefix = "\"";
  228. cmd = cb.GetUpdateCommand ();
  229. #if NET_2_0
  230. Assert.AreEqual ("UPDATE \"employee] SET \"id] = @p1, " +
  231. "\"fname] = @p2, \"lname] = @p3 WHERE ((\"id] = @p4) " +
  232. "AND (\"fname] = @p5) AND ((@p6 = 1 " +
  233. "AND \"lname] IS NULL) OR (\"lname] = @p7)))",
  234. cmd.CommandText, "#B1");
  235. #else
  236. Assert.AreEqual ("UPDATE \"employee SET \"id = @p1 , " +
  237. "\"fname = @p2 , \"lname = @p3 WHERE ( (\"id = @p4) " +
  238. "AND ((@p5 = 1 AND \"fname IS NULL) OR " +
  239. "(\"fname = @p6)) AND ((@p7 = 1 AND " +
  240. "\"lname IS NULL) OR (\"lname = @p8)) )",
  241. cmd.CommandText, "#B1");
  242. #endif
  243. Assert.AreSame (conn, cmd.Connection, "#B2");
  244. AssertUpdateParameters (cmd, false, "#B3:");
  245. Assert.AreSame (cmd, cb.GetUpdateCommand (), "#B4");
  246. cb.RefreshSchema ();
  247. #if NET_2_0
  248. cb.QuoteSuffix = "\"";
  249. #else
  250. cb.QuoteSuffix = "´";
  251. #endif
  252. cmd = cb.GetUpdateCommand ();
  253. #if NET_2_0
  254. Assert.AreEqual ("UPDATE \"employee\" SET \"id\" = @p1, " +
  255. "\"fname\" = @p2, \"lname\" = @p3 WHERE ((\"id\" = @p4) " +
  256. "AND (\"fname\" = @p5) AND ((@p6 = 1 " +
  257. "AND \"lname\" IS NULL) OR (\"lname\" = @p7)))",
  258. cmd.CommandText, "#C1");
  259. #else
  260. Assert.AreEqual ("UPDATE \"employee´ SET \"id´ = @p1 , " +
  261. "\"fname´ = @p2 , \"lname´ = @p3 WHERE ( (\"id´ = @p4) " +
  262. "AND ((@p5 = 1 AND \"fname´ IS NULL) OR " +
  263. "(\"fname´ = @p6)) AND ((@p7 = 1 AND " +
  264. "\"lname´ IS NULL) OR (\"lname´ = @p8)) )",
  265. cmd.CommandText, "#C1");
  266. #endif
  267. Assert.AreSame (conn, cmd.Connection, "#C2");
  268. AssertUpdateParameters (cmd, false, "#C3:");
  269. Assert.AreSame (cmd, cb.GetUpdateCommand (), "#C4");
  270. } finally {
  271. if (cmd != null)
  272. cmd.Dispose ();
  273. ConnectionManager.Singleton.CloseConnection ();
  274. }
  275. }
  276. [Test] // GetUpdateCommand ()
  277. public void GetUpdateCommand1_AutoIncrement ()
  278. {
  279. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  280. ConnectionManager.Singleton.OpenConnection ();
  281. SqlCommand cmd = null;
  282. try {
  283. cmd = conn.CreateCommand ();
  284. cmd.CommandText = "create table #tmp_table (id int primary key , counter int identity(1,1), value varchar(10))";
  285. cmd.ExecuteNonQuery ();
  286. string selectQuery = "select id, counter, value, id+1 as next_id from #tmp_table";
  287. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  288. DataSet ds = new DataSet ();
  289. da.Fill (ds);
  290. Assert.AreEqual (1, ds.Tables.Count);
  291. Assert.AreEqual (4, ds.Tables [0].Columns.Count);
  292. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  293. cmd = cb.GetUpdateCommand ();
  294. #if NET_2_0
  295. Assert.AreEqual ("UPDATE [#tmp_table] SET [id] = @p1, " +
  296. "[value] = @p2 WHERE (([id] = @p3) AND (" +
  297. "[counter] = @p4) AND ((@p5 = 1 AND [value] IS NULL) " +
  298. "OR ([value] = @p6)))", cmd.CommandText, "#1");
  299. Assert.AreEqual (6, cmd.Parameters.Count, "#2");
  300. #else
  301. Assert.AreEqual ("UPDATE #tmp_table SET id = @p1 , " +
  302. "value = @p2 WHERE ( (id = @p3) AND (" +
  303. "(@p4 = 1 AND counter IS NULL) OR (counter = @p5)) " +
  304. "AND ((@p6 = 1 AND value IS NULL) OR (value = @p7)) )",
  305. cmd.CommandText, "#1");
  306. Assert.AreEqual (7, cmd.Parameters.Count, "#2");
  307. #endif
  308. } finally {
  309. if (cmd != null)
  310. cmd.Dispose ();
  311. ConnectionManager.Singleton.CloseConnection ();
  312. }
  313. }
  314. [Test] // GetUpdateCommand ()
  315. public void GetUpdateCommand1_CheckParameters ()
  316. {
  317. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  318. ConnectionManager.Singleton.OpenConnection ();
  319. SqlCommand cmd = null;
  320. try {
  321. SqlDataAdapter adapter = new SqlDataAdapter (
  322. "select id, type_varchar from string_family",
  323. conn);
  324. SqlCommandBuilder cb = new SqlCommandBuilder (adapter);
  325. cmd = cb.GetUpdateCommand ();
  326. Assert.AreEqual (5, cmd.Parameters.Count, "#1");
  327. Assert.AreEqual (SqlDbType.Int, cmd.Parameters ["@p4"].SqlDbType, "#2");
  328. Assert.AreEqual (1, cmd.Parameters ["@p4"].Value, "#3");
  329. cmd = cb.GetDeleteCommand ();
  330. Assert.AreEqual (3, cmd.Parameters.Count, "#4");
  331. Assert.AreEqual (SqlDbType.Int, cmd.Parameters ["@p2"].SqlDbType, "#5");
  332. Assert.AreEqual (1, cmd.Parameters ["@p2"].Value, "#6");
  333. } finally {
  334. if (cmd != null)
  335. cmd.Dispose ();
  336. ConnectionManager.Singleton.CloseConnection ();
  337. }
  338. }
  339. #if NET_2_0
  340. [Test] // GetUpdateCommand (Boolean)
  341. public void GetUpdateCommand2 ()
  342. {
  343. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  344. SqlCommand cmd = null;
  345. try {
  346. string selectQuery = "select id, fname, lname, id+1 as next_id from employee where id = 1";
  347. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  348. DataSet ds = new DataSet ();
  349. da.Fill (ds, "IntTest");
  350. Assert.AreEqual (1, ds.Tables.Count);
  351. SqlCommandBuilder cb;
  352. cb = new SqlCommandBuilder (da);
  353. cmd = cb.GetUpdateCommand (true);
  354. Assert.AreEqual ("UPDATE [employee] SET [id] = @id, " +
  355. "[fname] = @fname, [lname] = @lname WHERE " +
  356. "(([id] = @Original_id) AND ([fname] = " +
  357. "@Original_fname) AND ((@IsNull_lname = 1 " +
  358. "AND [lname] IS NULL) OR ([lname] = " +
  359. "@Original_lname)))", cmd.CommandText, "#A1");
  360. Assert.AreSame (conn, cmd.Connection, "#A2");
  361. AssertUpdateParameters (cmd, true, "#A3:");
  362. cmd = cb.GetUpdateCommand (false);
  363. Assert.AreEqual ("UPDATE [employee] SET [id] = @id, " +
  364. "[fname] = @fname, [lname] = @lname WHERE " +
  365. "(([id] = @Original_id) AND ([fname] = " +
  366. "@Original_fname) AND ((@IsNull_lname = 1 " +
  367. "AND [lname] IS NULL) OR ([lname] = " +
  368. "@Original_lname)))", cmd.CommandText, "#B1");
  369. Assert.AreSame (conn, cmd.Connection, "#B2");
  370. AssertUpdateParameters (cmd, true, "#B3:");
  371. cb = new SqlCommandBuilder (da);
  372. cmd = cb.GetUpdateCommand (false);
  373. Assert.AreEqual ("UPDATE [employee] SET [id] = @p1, " +
  374. "[fname] = @p2, [lname] = @p3 WHERE " +
  375. "(([id] = @p4) AND ([fname] = @p5) AND " +
  376. "((@p6 = 1 AND [lname] IS NULL) OR " +
  377. "([lname] = @p7)))", cmd.CommandText, "#C1");
  378. Assert.AreSame (conn, cmd.Connection, "#C2");
  379. AssertUpdateParameters (cmd, false, "#C3:");
  380. cmd = cb.GetUpdateCommand (true);
  381. Assert.AreEqual ("UPDATE [employee] SET [id] = @id, " +
  382. "[fname] = @fname, [lname] = @lname WHERE " +
  383. "(([id] = @Original_id) AND ([fname] = " +
  384. "@Original_fname) AND ((@IsNull_lname = 1 " +
  385. "AND [lname] IS NULL) OR ([lname] = " +
  386. "@Original_lname)))", cmd.CommandText, "#D1");
  387. Assert.AreSame (conn, cmd.Connection, "#D2");
  388. AssertUpdateParameters (cmd, true, "#D3:");
  389. } finally {
  390. if (cmd != null)
  391. cmd.Dispose ();
  392. ConnectionManager.Singleton.CloseConnection ();
  393. }
  394. }
  395. [Test] // GetUpdateCommand (Boolean)
  396. public void GetUpdateCommand2_AutoIncrement ()
  397. {
  398. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  399. ConnectionManager.Singleton.OpenConnection ();
  400. SqlCommand cmd = null;
  401. try {
  402. cmd = conn.CreateCommand ();
  403. cmd.CommandText = "create table #tmp_table (id int primary key , counter int identity(1,1), value varchar(10))";
  404. cmd.ExecuteNonQuery ();
  405. string selectQuery = "select id, counter, value, id+1 as next_id from #tmp_table";
  406. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  407. DataSet ds = new DataSet ();
  408. da.Fill (ds);
  409. Assert.AreEqual (1, ds.Tables.Count);
  410. Assert.AreEqual (4, ds.Tables [0].Columns.Count);
  411. SqlCommandBuilder cb;
  412. cb = new SqlCommandBuilder (da);
  413. cmd = cb.GetUpdateCommand (true);
  414. Assert.AreEqual ("UPDATE [#tmp_table] SET [id] = @id, " +
  415. "[value] = @value WHERE (([id] = @Original_id) " +
  416. "AND ([counter] = @Original_counter) AND " +
  417. "((@IsNull_value = 1 AND [value] IS NULL) " +
  418. "OR ([value] = @Original_value)))",
  419. cmd.CommandText, "#A1");
  420. Assert.AreEqual (6, cmd.Parameters.Count, "#A2");
  421. cmd = cb.GetUpdateCommand (false);
  422. Assert.AreEqual ("UPDATE [#tmp_table] SET [id] = @id, " +
  423. "[value] = @value WHERE (([id] = @Original_id) " +
  424. "AND ([counter] = @Original_counter) AND " +
  425. "((@IsNull_value = 1 AND [value] IS NULL) " +
  426. "OR ([value] = @Original_value)))",
  427. cmd.CommandText, "#B1");
  428. Assert.AreEqual (6, cmd.Parameters.Count, "#B2");
  429. cb = new SqlCommandBuilder (da);
  430. cmd = cb.GetUpdateCommand (false);
  431. Assert.AreEqual ("UPDATE [#tmp_table] SET [id] = @p1, " +
  432. "[value] = @p2 WHERE (([id] = @p3) " +
  433. "AND ([counter] = @p4) AND ((@p5 = 1 " +
  434. "AND [value] IS NULL) OR ([value] = @p6)))",
  435. cmd.CommandText, "#C1");
  436. Assert.AreEqual (6, cmd.Parameters.Count, "#C2");
  437. cmd = cb.GetUpdateCommand (true);
  438. Assert.AreEqual ("UPDATE [#tmp_table] SET [id] = @id, " +
  439. "[value] = @value WHERE (([id] = @Original_id) " +
  440. "AND ([counter] = @Original_counter) AND " +
  441. "((@IsNull_value = 1 AND [value] IS NULL) " +
  442. "OR ([value] = @Original_value)))",
  443. cmd.CommandText, "#D1");
  444. Assert.AreEqual (6, cmd.Parameters.Count, "#D2");
  445. } finally {
  446. if (cmd != null)
  447. cmd.Dispose ();
  448. ConnectionManager.Singleton.CloseConnection ();
  449. }
  450. }
  451. [Test] // GetUpdateCommand (Boolean)
  452. public void GetUpdateDeleteCommand2_CheckParameters ()
  453. {
  454. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  455. ConnectionManager.Singleton.OpenConnection ();
  456. SqlCommand cmd = null;
  457. try {
  458. SqlDataAdapter adapter = new SqlDataAdapter (
  459. "select id, type_varchar from string_family",
  460. conn);
  461. SqlCommandBuilder cb = new SqlCommandBuilder (adapter);
  462. SqlCommand updateCommand = cb.GetUpdateCommand (true);
  463. Assert.AreEqual (5, updateCommand.Parameters.Count, "#A1");
  464. Assert.AreEqual (SqlDbType.VarChar, updateCommand.Parameters ["@type_varchar"].SqlDbType, "#A2");
  465. // FIXME: NotWorking
  466. //Assert.AreEqual (1, updateCommand.Parameters ["@type_char"].Value, "#A3");
  467. SqlCommand delCommand = cb.GetDeleteCommand (true);
  468. Assert.AreEqual (3, delCommand.Parameters.Count, "#B");
  469. Assert.AreEqual (DbType.Int32, delCommand.Parameters [0].DbType, "#B: DbType (0)");
  470. Assert.AreEqual ("@Original_id", delCommand.Parameters [0].ParameterName, "#B: ParameterName (0)");
  471. Assert.AreEqual ("id", delCommand.Parameters [0].SourceColumn, "#B: SourceColumn (0)");
  472. Assert.AreEqual (SqlDbType.Int, delCommand.Parameters [0].SqlDbType, "#B: SqlDbType (0)");
  473. Assert.IsNull (delCommand.Parameters [0].Value, "#B: Value (0)");
  474. Assert.AreEqual (DbType.Int32, delCommand.Parameters [1].DbType, "#B: DbType (1)");
  475. Assert.AreEqual ("@IsNull_type_varchar", delCommand.Parameters [1].ParameterName, "#B: ParameterName (1)");
  476. Assert.AreEqual ("type_varchar", delCommand.Parameters [1].SourceColumn, "#B: SourceColumn (1)");
  477. Assert.AreEqual (SqlDbType.Int, delCommand.Parameters [1].SqlDbType, "#B: SqlDbType (1)");
  478. Assert.AreEqual (1, delCommand.Parameters [1].Value, "#B: Value (1)");
  479. Assert.AreEqual (DbType.AnsiString, delCommand.Parameters [2].DbType, "#B: DbType (2)");
  480. Assert.AreEqual ("@Original_type_varchar", delCommand.Parameters [2].ParameterName, "#B: ParameterName (2)");
  481. Assert.AreEqual ("type_varchar", delCommand.Parameters [2].SourceColumn, "#B: SourceColumn (2)");
  482. Assert.AreEqual (SqlDbType.VarChar, delCommand.Parameters [2].SqlDbType, "#B: SqlDbType (2)");
  483. Assert.IsNull (delCommand.Parameters [2].Value, "#B: Value (2)");
  484. } finally {
  485. if (cmd != null)
  486. cmd.Dispose ();
  487. ConnectionManager.Singleton.CloseConnection ();
  488. }
  489. }
  490. #endif
  491. [Test]
  492. public void GetUpdateCommandDBConcurrencyExceptionTest ()
  493. {
  494. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  495. ConnectionManager.Singleton.OpenConnection ();
  496. try {
  497. string selectQuery = "select id, fname from employee where id = 1";
  498. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  499. DataSet ds = new DataSet ();
  500. da.Fill (ds, "IntTest");
  501. Assert.AreEqual (1, ds.Tables.Count);
  502. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  503. Assert.IsNotNull (cb);
  504. DataRow [] rows = ds.Tables [0].Select ("id=1");
  505. rows [0] [0] = 6660; // non existent
  506. ds.Tables [0].AcceptChanges (); // moves 6660 to original value
  507. rows [0] [0] = 1; // moves 6660 as search key into db table
  508. try {
  509. da.Update (rows);
  510. Assert.Fail ("#1");
  511. } catch (DBConcurrencyException ex) {
  512. // Concurrency violation: the UpdateCommand
  513. // affected 0 of the expected 1 records
  514. Assert.AreEqual (typeof (DBConcurrencyException), ex.GetType (), "#3");
  515. Assert.IsNull (ex.InnerException, "#4");
  516. Assert.IsNotNull (ex.Message, "#5");
  517. Assert.AreSame (rows [0], ex.Row, "#6");
  518. #if NET_2_0
  519. Assert.AreEqual (1, ex.RowCount, "#7");
  520. #endif
  521. }
  522. } finally {
  523. ConnectionManager.Singleton.CloseConnection ();
  524. }
  525. }
  526. [Test]
  527. public void GetDeleteCommandDBConcurrencyExceptionTest ()
  528. {
  529. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  530. ConnectionManager.Singleton.OpenConnection ();
  531. try {
  532. string selectQuery = "select id, fname from employee where id = 1";
  533. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  534. DataSet ds = new DataSet ();
  535. da.Fill (ds, "IntTest");
  536. Assert.AreEqual (1, ds.Tables.Count);
  537. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  538. Assert.IsNotNull (cb);
  539. DataRow [] rows = ds.Tables [0].Select ("id=1");
  540. rows [0] [0] = 6660; // non existent
  541. ds.Tables [0].AcceptChanges (); // moves 6660 to original value
  542. rows [0].Delete (); // moves 6660 as search key into db table
  543. try {
  544. da.Update (rows);
  545. Assert.Fail ("#1");
  546. } catch (DBConcurrencyException ex) {
  547. // Concurrency violation: the DeleteCommand
  548. // affected 0 of the expected 1 records
  549. Assert.AreEqual (typeof (DBConcurrencyException), ex.GetType (), "#2");
  550. Assert.IsNull (ex.InnerException, "#3");
  551. Assert.IsNotNull (ex.Message, "#4");
  552. Assert.AreSame (rows [0], ex.Row, "#5");
  553. #if NET_2_0
  554. Assert.AreEqual (1, ex.RowCount, "#6");
  555. #endif
  556. }
  557. } finally {
  558. ConnectionManager.Singleton.CloseConnection ();
  559. }
  560. }
  561. [Test] // GetDeleteCommand ()
  562. public void GetDeleteCommand1 ()
  563. {
  564. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  565. ConnectionManager.Singleton.OpenConnection ();
  566. SqlCommand cmd = null;
  567. try {
  568. string selectQuery = "select id, fname, lname, " +
  569. "id+2 as next_id from employee where " +
  570. "id = 3 and lname = 'A' and fname = 'B'";
  571. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  572. DataSet ds = new DataSet ();
  573. da.Fill (ds, "IntTest");
  574. Assert.AreEqual (1, ds.Tables.Count);
  575. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  576. cmd = cb.GetDeleteCommand ();
  577. #if NET_2_0
  578. Assert.AreEqual ("DELETE FROM [employee] WHERE " +
  579. "(([id] = @p1) AND ([fname] = @p2) AND " +
  580. "((@p3 = 1 AND [lname] IS NULL) OR " +
  581. "([lname] = @p4)))", cmd.CommandText, "#A1");
  582. #else
  583. Assert.AreEqual ("DELETE FROM employee WHERE ( " +
  584. "(id = @p1) AND ((@p2 = 1 AND fname IS NULL) " +
  585. "OR (fname = @p3)) AND ((@p4 = 1 AND " +
  586. "lname IS NULL) OR (lname = @p5)) )",
  587. cmd.CommandText, "#A1");
  588. #endif
  589. Assert.AreSame (conn, cmd.Connection, "#A2");
  590. AssertDeleteParameters (cmd, false, "#A3:");
  591. Assert.AreSame (cmd, cb.GetDeleteCommand (), "#A4");
  592. cb.RefreshSchema ();
  593. cb.QuotePrefix = "\"";
  594. cmd = cb.GetDeleteCommand ();
  595. #if NET_2_0
  596. Assert.AreEqual ("DELETE FROM \"employee] WHERE " +
  597. "((\"id] = @p1) AND (\"fname] = @p2) AND " +
  598. "((@p3 = 1 AND \"lname] IS NULL) OR " +
  599. "(\"lname] = @p4)))", cmd.CommandText, "#B1");
  600. #else
  601. Assert.AreEqual ("DELETE FROM \"employee WHERE ( " +
  602. "(\"id = @p1) AND ((@p2 = 1 AND \"fname IS NULL) " +
  603. "OR (\"fname = @p3)) AND ((@p4 = 1 AND " +
  604. "\"lname IS NULL) OR (\"lname = @p5)) )",
  605. cmd.CommandText, "#B1");
  606. #endif
  607. Assert.AreSame (conn, cmd.Connection, "#B2");
  608. AssertDeleteParameters (cmd, false, "#B3:");
  609. Assert.AreSame (cmd, cb.GetDeleteCommand (), "#B4");
  610. cb.RefreshSchema ();
  611. #if NET_2_0
  612. cb.QuoteSuffix = "\"";
  613. #else
  614. cb.QuoteSuffix = "´";
  615. #endif
  616. cmd = cb.GetDeleteCommand ();
  617. #if NET_2_0
  618. Assert.AreEqual ("DELETE FROM \"employee\" WHERE " +
  619. "((\"id\" = @p1) AND (\"fname\" = @p2) AND " +
  620. "((@p3 = 1 AND \"lname\" IS NULL) OR " +
  621. "(\"lname\" = @p4)))", cmd.CommandText, "#C1");
  622. #else
  623. Assert.AreEqual ("DELETE FROM \"employee´ WHERE ( " +
  624. "(\"id´ = @p1) AND ((@p2 = 1 AND \"fname´ IS NULL) " +
  625. "OR (\"fname´ = @p3)) AND ((@p4 = 1 AND " +
  626. "\"lname´ IS NULL) OR (\"lname´ = @p5)) )",
  627. cmd.CommandText, "#C1");
  628. #endif
  629. Assert.AreSame (conn, cmd.Connection, "#C2");
  630. AssertDeleteParameters (cmd, false, "#C3:");
  631. Assert.AreSame (cmd, cb.GetDeleteCommand (), "#C4");
  632. } finally {
  633. if (cmd != null)
  634. cmd.Dispose ();
  635. ConnectionManager.Singleton.CloseConnection ();
  636. }
  637. }
  638. [Test] // GetDeleteCommand ()
  639. public void GetDeleteCommand1_AutoIncrement ()
  640. {
  641. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  642. ConnectionManager.Singleton.OpenConnection ();
  643. SqlCommand cmd = null;
  644. try {
  645. cmd = conn.CreateCommand ();
  646. cmd.CommandText = "create table #tmp_table (id int primary key , counter int identity(1,1), value varchar(10))";
  647. cmd.ExecuteNonQuery ();
  648. string selectQuery = "select id, counter, value, id+1 as next_id from #tmp_table";
  649. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  650. DataSet ds = new DataSet ();
  651. da.Fill (ds);
  652. Assert.AreEqual (1, ds.Tables.Count);
  653. Assert.AreEqual (4, ds.Tables [0].Columns.Count);
  654. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  655. cmd = cb.GetDeleteCommand ();
  656. #if NET_2_0
  657. Assert.AreEqual ("DELETE FROM [#tmp_table] WHERE " +
  658. "(([id] = @p1) AND ([counter] = @p2) AND " +
  659. "((@p3 = 1 AND [value] IS NULL) OR ([value] = @p4)))",
  660. cmd.CommandText, "#1");
  661. Assert.AreEqual (4, cmd.Parameters.Count, "#2");
  662. #else
  663. Assert.AreEqual ("DELETE FROM #tmp_table WHERE ( " +
  664. "(id = @p1) AND ((@p2 = 1 AND counter IS NULL) " +
  665. "OR (counter = @p3)) AND ((@p4 = 1 AND value " +
  666. "IS NULL) OR (value = @p5)) )",
  667. cmd.CommandText, "#1");
  668. Assert.AreEqual (5, cmd.Parameters.Count, "#2");
  669. #endif
  670. } finally {
  671. if (cmd != null)
  672. cmd.Dispose ();
  673. ConnectionManager.Singleton.CloseConnection ();
  674. }
  675. }
  676. [Test] // GetDeleteCommand ()
  677. public void GetDeleteCommand1_CheckParameters ()
  678. {
  679. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  680. ConnectionManager.Singleton.OpenConnection ();
  681. SqlCommand cmd = null;
  682. try {
  683. SqlDataAdapter adapter = new SqlDataAdapter (
  684. "select id, type_varchar from string_family",
  685. conn);
  686. SqlCommandBuilder cb = new SqlCommandBuilder (adapter);
  687. cmd = cb.GetDeleteCommand ();
  688. Assert.AreEqual (3, cmd.Parameters.Count, "#1");
  689. Assert.AreEqual (SqlDbType.Int, cmd.Parameters ["@p2"].SqlDbType, "#2");
  690. Assert.AreEqual (1, cmd.Parameters ["@p2"].Value, "#3");
  691. } finally {
  692. if (cmd != null)
  693. cmd.Dispose ();
  694. ConnectionManager.Singleton.CloseConnection ();
  695. }
  696. }
  697. #if NET_2_0
  698. [Test] // GetDeleteCommand ()
  699. public void GetDeleteCommand2 ()
  700. {
  701. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  702. ConnectionManager.Singleton.OpenConnection ();
  703. SqlCommand cmd = null;
  704. try {
  705. string selectQuery = "select id, fname, lname, id+2 as next_id from employee where id = 3";
  706. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  707. DataSet ds = new DataSet ();
  708. da.Fill (ds, "IntTest");
  709. Assert.AreEqual (1, ds.Tables.Count);
  710. SqlCommandBuilder cb;
  711. cb = new SqlCommandBuilder (da);
  712. cmd = cb.GetDeleteCommand (true);
  713. Assert.AreEqual ("DELETE FROM [employee] WHERE " +
  714. "(([id] = @Original_id) AND ([fname] = " +
  715. "@Original_fname) AND ((@IsNull_lname = 1 " +
  716. "AND [lname] IS NULL) OR ([lname] = " +
  717. "@Original_lname)))", cmd.CommandText, "#A1");
  718. Assert.AreSame (conn, cmd.Connection, "#A2");
  719. AssertDeleteParameters (cmd, true, "#A3:");
  720. Assert.AreSame (cmd, cb.GetDeleteCommand (true), "#A4");
  721. cmd = cb.GetDeleteCommand (false);
  722. Assert.AreEqual ("DELETE FROM [employee] WHERE " +
  723. "(([id] = @Original_id) AND ([fname] = " +
  724. "@Original_fname) AND ((@IsNull_lname = 1 " +
  725. "AND [lname] IS NULL) OR ([lname] = " +
  726. "@Original_lname)))", cmd.CommandText, "#B1");
  727. Assert.AreSame (conn, cmd.Connection, "#B2");
  728. AssertDeleteParameters (cmd, true, "#B3:");
  729. Assert.AreSame (cmd, cb.GetDeleteCommand (false), "#B4");
  730. cb = new SqlCommandBuilder (da);
  731. cmd = cb.GetDeleteCommand (false);
  732. Assert.AreEqual ("DELETE FROM [employee] WHERE " +
  733. "(([id] = @p1) AND ([fname] = @p2) AND " +
  734. "((@p3 = 1 AND [lname] IS NULL) OR " +
  735. "([lname] = @p4)))", cmd.CommandText, "#C1");
  736. Assert.AreSame (conn, cmd.Connection, "#C2");
  737. AssertDeleteParameters (cmd, false, "#C3:");
  738. Assert.AreSame (cmd, cb.GetDeleteCommand (false), "#C4");
  739. cmd = cb.GetDeleteCommand (true);
  740. Assert.AreEqual ("DELETE FROM [employee] WHERE " +
  741. "(([id] = @Original_id) AND ([fname] = " +
  742. "@Original_fname) AND ((@IsNull_lname = 1 " +
  743. "AND [lname] IS NULL) OR ([lname] = " +
  744. "@Original_lname)))", cmd.CommandText, "#D1");
  745. Assert.AreSame (conn, cmd.Connection, "#D2");
  746. AssertDeleteParameters (cmd, true, "#D3:");
  747. Assert.AreSame (cmd, cb.GetDeleteCommand (false), "#D4");
  748. } finally {
  749. if (cmd != null)
  750. cmd.Dispose ();
  751. ConnectionManager.Singleton.CloseConnection ();
  752. }
  753. }
  754. [Test] // GetDeleteCommand (Boolean)
  755. public void GetDeleteCommand2_AutoIncrement ()
  756. {
  757. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  758. ConnectionManager.Singleton.OpenConnection ();
  759. SqlCommand cmd = null;
  760. try {
  761. cmd = conn.CreateCommand ();
  762. cmd.CommandText = "create table #tmp_table (id int primary key , counter int identity(1,1), value varchar(10))";
  763. cmd.ExecuteNonQuery ();
  764. string selectQuery = "select id, counter, value, id+1 as next_id from #tmp_table";
  765. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  766. DataSet ds = new DataSet ();
  767. da.Fill (ds);
  768. Assert.AreEqual (1, ds.Tables.Count);
  769. Assert.AreEqual (4, ds.Tables [0].Columns.Count);
  770. SqlCommandBuilder cb;
  771. cb = new SqlCommandBuilder (da);
  772. cmd = cb.GetDeleteCommand (true);
  773. Assert.AreEqual ("DELETE FROM [#tmp_table] WHERE " +
  774. "(([id] = @Original_id) AND ([counter] = @Original_counter) " +
  775. "AND ((@IsNull_value = 1 AND [value] IS NULL) " +
  776. "OR ([value] = @Original_value)))",
  777. cmd.CommandText, "#A1");
  778. Assert.AreEqual (4, cmd.Parameters.Count, "#A2");
  779. cmd = cb.GetDeleteCommand (false);
  780. Assert.AreEqual ("DELETE FROM [#tmp_table] WHERE " +
  781. "(([id] = @Original_id) AND ([counter] = @Original_counter) " +
  782. "AND ((@IsNull_value = 1 AND [value] IS NULL) " +
  783. "OR ([value] = @Original_value)))",
  784. cmd.CommandText, "#B1");
  785. Assert.AreEqual (4, cmd.Parameters.Count, "#B2");
  786. cb = new SqlCommandBuilder (da);
  787. cmd = cb.GetDeleteCommand (false);
  788. Assert.AreEqual ("DELETE FROM [#tmp_table] WHERE " +
  789. "(([id] = @p1) AND ([counter] = @p2) " +
  790. "AND ((@p3 = 1 AND [value] IS NULL) " +
  791. "OR ([value] = @p4)))",
  792. cmd.CommandText, "#C1");
  793. Assert.AreEqual (4, cmd.Parameters.Count, "#C2");
  794. cmd = cb.GetDeleteCommand (true);
  795. Assert.AreEqual ("DELETE FROM [#tmp_table] WHERE " +
  796. "(([id] = @Original_id) AND ([counter] = @Original_counter) " +
  797. "AND ((@IsNull_value = 1 AND [value] IS NULL) " +
  798. "OR ([value] = @Original_value)))",
  799. cmd.CommandText, "#D1");
  800. Assert.AreEqual (4, cmd.Parameters.Count, "#D2");
  801. } finally {
  802. if (cmd != null)
  803. cmd.Dispose ();
  804. ConnectionManager.Singleton.CloseConnection ();
  805. }
  806. }
  807. #endif
  808. [Test]
  809. public void DefaultProperties ()
  810. {
  811. try {
  812. ConnectionManager.Singleton.OpenConnection ();
  813. //IDbConnection conn = ConnectionManager.Singleton.Connection;
  814. SqlCommandBuilder cb = new SqlCommandBuilder ();
  815. #if NET_2_0
  816. Assert.AreEqual ("[", cb.QuotePrefix, "#5");
  817. Assert.AreEqual ("]", cb.QuoteSuffix, "#6");
  818. Assert.AreEqual (".", cb.CatalogSeparator, "#2");
  819. //Assert.AreEqual ("", cb.DecimalSeparator, "#3");
  820. Assert.AreEqual (".", cb.SchemaSeparator, "#4");
  821. Assert.AreEqual (CatalogLocation.Start, cb.CatalogLocation, "#1");
  822. Assert.AreEqual ("[monotest]", cb.QuoteIdentifier ("monotest"), "#7");
  823. Assert.AreEqual ("\"monotest\"", cb.UnquoteIdentifier ("\"monotest\""), "#8");
  824. //Assert.AreEqual (cb.ConflictOption.CompareAllSearchableValues, cb.ConflictDetection);
  825. #else
  826. Assert.AreEqual ("", cb.QuotePrefix, "#5");
  827. Assert.AreEqual ("", cb.QuoteSuffix, "#6");
  828. //Assert.AreEqual ("\"monotest\"", cb.QuoteIdentifier ("monotest"), "#7");
  829. //Assert.AreEqual ("monotest", cb.UnquoteIdentifier ("\"monotest\""), "#8");
  830. #endif
  831. } finally {
  832. ConnectionManager.Singleton.CloseConnection ();
  833. }
  834. // FIXME: test SetAllValues
  835. }
  836. // FIXME: Add tests for examining RowError
  837. // FIXME: Add test for ContinueUpdateOnError property
  838. [Test]
  839. public void CheckParameters_BuiltCommand ()
  840. {
  841. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  842. ConnectionManager.Singleton.OpenConnection ();
  843. try {
  844. SqlDataAdapter adapter = new SqlDataAdapter ("select id,type_varchar from string_family", conn);
  845. SqlCommandBuilder cb = new SqlCommandBuilder(adapter);
  846. DataSet ds = new DataSet ();
  847. adapter.Fill(ds);
  848. Assert.AreEqual (2, cb.GetInsertCommand().Parameters.Count, "#1");
  849. DataRow row_rsInput = ds.Tables[0].NewRow();
  850. row_rsInput["id"] = 100;
  851. row_rsInput["type_varchar"] = "ttt";
  852. ds.Tables[0].Rows.Add(row_rsInput);
  853. Assert.AreEqual (2, cb.GetInsertCommand().Parameters.Count, "#2");
  854. row_rsInput = ds.Tables[0].NewRow();
  855. row_rsInput["id"] = 101;
  856. row_rsInput["type_varchar"] = "ttt";
  857. ds.Tables[0].Rows.Add(row_rsInput);
  858. Assert.AreEqual (2, cb.GetInsertCommand().Parameters.Count, "#3");
  859. } finally {
  860. ConnectionManager.Singleton.CloseConnection ();
  861. }
  862. }
  863. [Test]
  864. public void DeriveParameters ()
  865. {
  866. SqlConnection conn;
  867. SqlCommand cmd = null;
  868. SqlParameter param;
  869. conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  870. ConnectionManager.Singleton.OpenConnection ();
  871. try {
  872. cmd = conn.CreateCommand ();
  873. cmd.CommandText = "sp_326182a";
  874. cmd.CommandType = CommandType.StoredProcedure;
  875. cmd.CommandTimeout = 90;
  876. cmd.Parameters.Add ("dummy", SqlDbType.Image, 5);
  877. SqlCommandBuilder.DeriveParameters (cmd);
  878. Assert.AreEqual (5, cmd.Parameters.Count, "#A1");
  879. cmd = conn.CreateCommand ();
  880. cmd.CommandText = "sp_326182b";
  881. cmd.CommandType = CommandType.StoredProcedure;
  882. cmd.CommandTimeout = 90;
  883. cmd.Parameters.Add ("dummy", SqlDbType.Image, 5);
  884. SqlCommandBuilder.DeriveParameters (cmd);
  885. Assert.AreEqual (4, cmd.Parameters.Count, "#A");
  886. param = cmd.Parameters [0];
  887. Assert.AreEqual (ParameterDirection.ReturnValue, param.Direction, "#B:Direction");
  888. Assert.IsFalse (param.IsNullable, "#B:IsNullable");
  889. Assert.AreEqual ("@RETURN_VALUE", param.ParameterName, "#B:ParameterName");
  890. Assert.AreEqual (0, param.Precision, "#B:Precision");
  891. Assert.AreEqual (0, param.Scale, "#B:Scale");
  892. //Assert.AreEqual (0, param.Size, "#B:Size");
  893. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, "#B:SqlDbType");
  894. Assert.IsNull (param.Value, "#B:Value");
  895. param = cmd.Parameters [1];
  896. Assert.AreEqual (ParameterDirection.Input, param.Direction, "#C:Direction");
  897. Assert.IsFalse (param.IsNullable, "#C:IsNullable");
  898. Assert.AreEqual ("@param0", param.ParameterName, "#C:ParameterName");
  899. Assert.AreEqual (0, param.Precision, "#C:Precision");
  900. Assert.AreEqual (0, param.Scale, "#C:Scale");
  901. //Assert.AreEqual (0, param.Size, "#C:Size");
  902. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, "#C:SqlDbType");
  903. Assert.IsNull (param.Value, "#C:Value");
  904. param = cmd.Parameters [2];
  905. Assert.AreEqual (ParameterDirection.InputOutput, param.Direction, "#D:Direction");
  906. Assert.IsFalse (param.IsNullable, "#D:IsNullable");
  907. Assert.AreEqual ("@param1", param.ParameterName, "#D:ParameterName");
  908. Assert.AreEqual (5, param.Precision, "#D:Precision");
  909. Assert.AreEqual (3, param.Scale, "#D:Scale");
  910. //Assert.AreEqual (0, param.Size, "#D:Size");
  911. Assert.AreEqual (SqlDbType.Decimal, param.SqlDbType, "#D:SqlDbType");
  912. Assert.IsNull (param.Value, "#D:Value");
  913. param = cmd.Parameters [3];
  914. Assert.AreEqual (ParameterDirection.Input, param.Direction, "#E:Direction");
  915. Assert.IsFalse (param.IsNullable, "#E:IsNullable");
  916. Assert.AreEqual ("@param2", param.ParameterName, "#E:ParameterName");
  917. Assert.AreEqual (0, param.Precision, "#E:Precision");
  918. Assert.AreEqual (0, param.Scale, "#E:Scale");
  919. Assert.AreEqual (12, param.Size, "#E:Size");
  920. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, "#E:SqlDbType");
  921. Assert.IsNull (param.Value, "#E:Value");
  922. cmd.Parameters ["@param0"].Value = 5;
  923. cmd.Parameters ["@param1"].Value = 4.000m;
  924. cmd.Parameters ["@param2"].Value = DBNull.Value;
  925. cmd.ExecuteNonQuery ();
  926. Assert.AreEqual (666, cmd.Parameters ["@RETURN_VALUE"].Value, "#F1");
  927. Assert.AreEqual (5, cmd.Parameters ["@param0"].Value, "#F2");
  928. Assert.AreEqual (11m, cmd.Parameters ["@param1"].Value, "#F3");
  929. Assert.AreEqual (DBNull.Value, cmd.Parameters ["@param2"].Value, "#F4");
  930. } finally {
  931. if (cmd != null)
  932. cmd.Dispose ();
  933. ConnectionManager.Singleton.CloseConnection ();
  934. }
  935. }
  936. [Test]
  937. public void QuotePrefix_DeleteCommand_Generated ()
  938. {
  939. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  940. SqlCommand cmd = null;
  941. try {
  942. string selectQuery = "select id, lname from employee where id = 3";
  943. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  944. DataSet ds = new DataSet ();
  945. da.Fill (ds, "IntTest");
  946. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  947. cmd = cb.GetDeleteCommand ();
  948. #if NET_2_0
  949. Assert.AreEqual ("[", cb.QuotePrefix, "#1");
  950. #else
  951. Assert.AreEqual (string.Empty, cb.QuotePrefix, "#1");
  952. #endif
  953. try {
  954. cb.QuotePrefix = "\"";
  955. Assert.Fail ("#2");
  956. } catch (InvalidOperationException ex) {
  957. // The QuotePrefix and QuoteSuffix properties
  958. // cannot be changed once an Insert, Update, or
  959. // Delete command has been generated
  960. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
  961. Assert.IsNull (ex.InnerException, "#4");
  962. Assert.IsNotNull (ex.Message, "#5");
  963. }
  964. #if NET_2_0
  965. Assert.AreEqual ("[", cb.QuotePrefix, "#6");
  966. #else
  967. Assert.AreEqual (string.Empty, cb.QuotePrefix, "#6");
  968. #endif
  969. cb.RefreshSchema ();
  970. cb.QuotePrefix = "\"";
  971. } finally {
  972. if (cmd != null)
  973. cmd.Dispose ();
  974. ConnectionManager.Singleton.CloseConnection ();
  975. }
  976. }
  977. [Test]
  978. public void QuotePrefix_InsertCommand_Generated ()
  979. {
  980. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  981. SqlCommand cmd = null;
  982. try {
  983. string selectQuery = "select id, lname from employee where id = 3";
  984. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  985. DataSet ds = new DataSet ();
  986. da.Fill (ds, "IntTest");
  987. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  988. cmd = cb.GetInsertCommand ();
  989. #if NET_2_0
  990. Assert.AreEqual ("[", cb.QuotePrefix, "#1");
  991. #else
  992. Assert.AreEqual (string.Empty, cb.QuotePrefix, "#1");
  993. #endif
  994. try {
  995. cb.QuotePrefix = "\"";
  996. Assert.Fail ("#2");
  997. } catch (InvalidOperationException ex) {
  998. // The QuotePrefix and QuoteSuffix properties
  999. // cannot be changed once an Insert, Update, or
  1000. // Delete command has been generated
  1001. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
  1002. Assert.IsNull (ex.InnerException, "#4");
  1003. Assert.IsNotNull (ex.Message, "#5");
  1004. }
  1005. #if NET_2_0
  1006. Assert.AreEqual ("[", cb.QuotePrefix, "#6");
  1007. #else
  1008. Assert.AreEqual (string.Empty, cb.QuotePrefix, "#6");
  1009. #endif
  1010. cb.RefreshSchema ();
  1011. cb.QuotePrefix = "\"";
  1012. } finally {
  1013. if (cmd != null)
  1014. cmd.Dispose ();
  1015. ConnectionManager.Singleton.CloseConnection ();
  1016. }
  1017. }
  1018. [Test]
  1019. public void QuotePrefix_UpdateCommand_Generated ()
  1020. {
  1021. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  1022. SqlCommand cmd = null;
  1023. try {
  1024. string selectQuery = "select id, lname from employee where id = 3";
  1025. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  1026. DataSet ds = new DataSet ();
  1027. da.Fill (ds, "IntTest");
  1028. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  1029. cmd = cb.GetUpdateCommand ();
  1030. #if NET_2_0
  1031. Assert.AreEqual ("[", cb.QuotePrefix, "#1");
  1032. #else
  1033. Assert.AreEqual (string.Empty, cb.QuotePrefix, "#1");
  1034. #endif
  1035. try {
  1036. cb.QuotePrefix = "\"";
  1037. Assert.Fail ("#2");
  1038. } catch (InvalidOperationException ex) {
  1039. // The QuotePrefix and QuoteSuffix properties
  1040. // cannot be changed once an Insert, Update, or
  1041. // Delete command has been generated
  1042. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
  1043. Assert.IsNull (ex.InnerException, "#4");
  1044. Assert.IsNotNull (ex.Message, "#5");
  1045. }
  1046. #if NET_2_0
  1047. Assert.AreEqual ("[", cb.QuotePrefix, "#6");
  1048. #else
  1049. Assert.AreEqual (string.Empty, cb.QuotePrefix, "#6");
  1050. #endif
  1051. cb.RefreshSchema ();
  1052. cb.QuotePrefix = "\"";
  1053. } finally {
  1054. if (cmd != null)
  1055. cmd.Dispose ();
  1056. ConnectionManager.Singleton.CloseConnection ();
  1057. }
  1058. }
  1059. [Test]
  1060. public void QuoteSuffix_DeleteCommand_Generated ()
  1061. {
  1062. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  1063. SqlCommand cmd = null;
  1064. try {
  1065. string selectQuery = "select id, lname from employee where id = 3";
  1066. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  1067. DataSet ds = new DataSet ();
  1068. da.Fill (ds, "IntTest");
  1069. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  1070. cmd = cb.GetDeleteCommand ();
  1071. #if NET_2_0
  1072. Assert.AreEqual ("]", cb.QuoteSuffix, "#1");
  1073. #else
  1074. Assert.AreEqual (string.Empty, cb.QuoteSuffix, "#1");
  1075. #endif
  1076. try {
  1077. cb.QuoteSuffix = "\"";
  1078. Assert.Fail ("#2");
  1079. } catch (InvalidOperationException ex) {
  1080. // The QuotePrefix and QuoteSuffix properties
  1081. // cannot be changed once an Insert, Update, or
  1082. // Delete command has been generated
  1083. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
  1084. Assert.IsNull (ex.InnerException, "#4");
  1085. Assert.IsNotNull (ex.Message, "#5");
  1086. }
  1087. #if NET_2_0
  1088. Assert.AreEqual ("]", cb.QuoteSuffix, "#6");
  1089. #else
  1090. Assert.AreEqual (string.Empty, cb.QuoteSuffix, "#6");
  1091. #endif
  1092. cb.RefreshSchema ();
  1093. cb.QuoteSuffix = "\"";
  1094. } finally {
  1095. if (cmd != null)
  1096. cmd.Dispose ();
  1097. ConnectionManager.Singleton.CloseConnection ();
  1098. }
  1099. }
  1100. [Test]
  1101. public void QuoteSuffix_InsertCommand_Generated ()
  1102. {
  1103. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  1104. SqlCommand cmd = null;
  1105. try {
  1106. string selectQuery = "select id, lname from employee where id = 3";
  1107. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  1108. DataSet ds = new DataSet ();
  1109. da.Fill (ds, "IntTest");
  1110. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  1111. cmd = cb.GetInsertCommand ();
  1112. #if NET_2_0
  1113. Assert.AreEqual ("]", cb.QuoteSuffix, "#1");
  1114. #else
  1115. Assert.AreEqual (string.Empty, cb.QuoteSuffix, "#1");
  1116. #endif
  1117. try {
  1118. cb.QuoteSuffix = "\"";
  1119. Assert.Fail ("#2");
  1120. } catch (InvalidOperationException ex) {
  1121. // The QuotePrefix and QuoteSuffix properties
  1122. // cannot be changed once an Insert, Update, or
  1123. // Delete command has been generated
  1124. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
  1125. Assert.IsNull (ex.InnerException, "#4");
  1126. Assert.IsNotNull (ex.Message, "#5");
  1127. }
  1128. #if NET_2_0
  1129. Assert.AreEqual ("]", cb.QuoteSuffix, "#6");
  1130. #else
  1131. Assert.AreEqual (string.Empty, cb.QuoteSuffix, "#6");
  1132. #endif
  1133. cb.RefreshSchema ();
  1134. cb.QuoteSuffix = "\"";
  1135. } finally {
  1136. if (cmd != null)
  1137. cmd.Dispose ();
  1138. ConnectionManager.Singleton.CloseConnection ();
  1139. }
  1140. }
  1141. [Test]
  1142. public void QuoteSuffix_UpdateCommand_Generated ()
  1143. {
  1144. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  1145. SqlCommand cmd = null;
  1146. try {
  1147. string selectQuery = "select id, lname from employee where id = 3";
  1148. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  1149. DataSet ds = new DataSet ();
  1150. da.Fill (ds, "IntTest");
  1151. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  1152. cmd = cb.GetUpdateCommand ();
  1153. #if NET_2_0
  1154. Assert.AreEqual ("]", cb.QuoteSuffix, "#1");
  1155. #else
  1156. Assert.AreEqual (string.Empty, cb.QuoteSuffix, "#1");
  1157. #endif
  1158. try {
  1159. cb.QuoteSuffix = "\"";
  1160. Assert.Fail ("#2");
  1161. } catch (InvalidOperationException ex) {
  1162. // The QuotePrefix and QuoteSuffix properties
  1163. // cannot be changed once an Insert, Update, or
  1164. // Delete command has been generated
  1165. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
  1166. Assert.IsNull (ex.InnerException, "#4");
  1167. Assert.IsNotNull (ex.Message, "#5");
  1168. }
  1169. #if NET_2_0
  1170. Assert.AreEqual ("]", cb.QuoteSuffix, "#6");
  1171. #else
  1172. Assert.AreEqual (string.Empty, cb.QuoteSuffix, "#6");
  1173. #endif
  1174. cb.RefreshSchema ();
  1175. cb.QuoteSuffix = "\"";
  1176. } finally {
  1177. if (cmd != null)
  1178. cmd.Dispose ();
  1179. ConnectionManager.Singleton.CloseConnection ();
  1180. }
  1181. }
  1182. static void AssertDeleteParameters (SqlCommand cmd, bool useColumnsForParameterNames, string prefix)
  1183. {
  1184. SqlParameter param;
  1185. #if NET_2_0
  1186. Assert.AreEqual (4, cmd.Parameters.Count, prefix + "Count");
  1187. #else
  1188. Assert.AreEqual (5, cmd.Parameters.Count, prefix + "Count");
  1189. #endif
  1190. param = cmd.Parameters [0];
  1191. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (0)");
  1192. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (0)");
  1193. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (0)");
  1194. Assert.AreEqual (0, param.Offset, prefix + "Offset (0)");
  1195. if (useColumnsForParameterNames)
  1196. Assert.AreEqual ("@Original_id", param.ParameterName, prefix + "ParameterName (0)");
  1197. else
  1198. Assert.AreEqual ("@p1", param.ParameterName, prefix + "ParameterName (0)");
  1199. Assert.AreEqual (10, param.Precision, prefix + "Precision (0)");
  1200. Assert.AreEqual (0, param.Scale, prefix + "Scale (0)");
  1201. //Assert.AreEqual (0, param.Size, prefix + "Size (0)");
  1202. Assert.AreEqual ("id", param.SourceColumn, prefix + "SourceColumn (0)");
  1203. #if NET_2_0
  1204. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (0)");
  1205. #endif
  1206. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (0)");
  1207. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (0)");
  1208. #if NET_2_0
  1209. Assert.IsNull (param.SqlValue, prefix + "SqlValue (0)");
  1210. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (0)");
  1211. #endif
  1212. Assert.IsNull (param.Value, prefix + "Value (0)");
  1213. #if NET_2_0
  1214. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (0)");
  1215. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (0)");
  1216. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (0)");
  1217. #endif
  1218. #if ONLY_1_1
  1219. param = cmd.Parameters [1];
  1220. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (1)");
  1221. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (1)");
  1222. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (1)");
  1223. Assert.AreEqual (0, param.Offset, prefix + "Offset (1)");
  1224. Assert.AreEqual ("@p2", param.ParameterName, prefix + "ParameterName (1)");
  1225. Assert.AreEqual (0, param.Precision, prefix + "Precision (1)");
  1226. Assert.AreEqual (0, param.Scale, prefix + "Scale (1)");
  1227. //Assert.AreEqual (0, param.Size, prefix + "Size (1)");
  1228. Assert.AreEqual (string.Empty, param.SourceColumn, prefix + "SourceColumn (1)");
  1229. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (1)");
  1230. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (1)");
  1231. Assert.AreEqual (1, param.Value, prefix + "Value (1)");
  1232. #endif
  1233. #if NET_2_0
  1234. param = cmd.Parameters [1];
  1235. #else
  1236. param = cmd.Parameters [2];
  1237. #endif
  1238. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (2)");
  1239. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (2)");
  1240. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (2)");
  1241. Assert.AreEqual (0, param.Offset, prefix + "Offset (2)");
  1242. #if NET_2_0
  1243. if (useColumnsForParameterNames)
  1244. Assert.AreEqual ("@Original_fname", param.ParameterName, prefix + "ParameterName (2)");
  1245. else
  1246. Assert.AreEqual ("@p2", param.ParameterName, prefix + "ParameterName (2)");
  1247. #else
  1248. Assert.AreEqual ("@p3", param.ParameterName, prefix + "ParameterName (2)");
  1249. #endif
  1250. Assert.AreEqual (0, param.Precision, prefix + "Precision (2)");
  1251. Assert.AreEqual (0, param.Scale, prefix + "Scale (2)");
  1252. Assert.AreEqual (0, param.Size, prefix + "Size (2)");
  1253. Assert.AreEqual ("fname", param.SourceColumn, prefix + "SourceColumn (2)");
  1254. #if NET_2_0
  1255. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (2)");
  1256. #endif
  1257. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (2)");
  1258. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (2)");
  1259. #if NET_2_0
  1260. Assert.IsNull (param.SqlValue, prefix + "SqlValue (2)");
  1261. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (2)");
  1262. #endif
  1263. Assert.IsNull (param.Value, prefix + "Value (2)");
  1264. #if NET_2_0
  1265. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (2)");
  1266. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (2)");
  1267. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (2)");
  1268. #endif
  1269. #if NET_2_0
  1270. param = cmd.Parameters [2];
  1271. #else
  1272. param = cmd.Parameters [3];
  1273. #endif
  1274. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (3)");
  1275. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (3)");
  1276. #if NET_2_0
  1277. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (3)");
  1278. #else
  1279. Assert.IsTrue (param.IsNullable, prefix + "IsNullable (3)");
  1280. #endif
  1281. Assert.AreEqual (0, param.Offset, prefix + "Offset (3)");
  1282. #if NET_2_0
  1283. if (useColumnsForParameterNames)
  1284. Assert.AreEqual ("@IsNull_lname", param.ParameterName, prefix + "ParameterName (3)");
  1285. else
  1286. Assert.AreEqual ("@p3", param.ParameterName, prefix + "ParameterName (3)");
  1287. #else
  1288. Assert.AreEqual ("@p4", param.ParameterName, prefix + "ParameterName (3)");
  1289. #endif
  1290. Assert.AreEqual (0, param.Precision, prefix + "Precision (3)");
  1291. Assert.AreEqual (0, param.Scale, prefix + "Scale (3)");
  1292. //Assert.AreEqual (0, param.Size, prefix + "Size (3)");
  1293. #if NET_2_0
  1294. Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (3)");
  1295. Assert.IsTrue (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (3)");
  1296. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (3)");
  1297. #else
  1298. Assert.AreEqual (string.Empty, param.SourceColumn, prefix + "SourceColumn (3)");
  1299. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (3)");
  1300. #endif
  1301. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (3)");
  1302. #if NET_2_0
  1303. Assert.IsNotNull (param.SqlValue, prefix + "SqlValue (3)");
  1304. Assert.AreEqual (typeof (SqlInt32), param.SqlValue.GetType (), prefix + "SqlValue (3)");
  1305. Assert.AreEqual (1, ((SqlInt32) param.SqlValue).Value, prefix + "SqlValue (3)");
  1306. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (3)");
  1307. #endif
  1308. Assert.AreEqual (1, param.Value, prefix + "Value (3)");
  1309. #if NET_2_0
  1310. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (3)");
  1311. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (3)");
  1312. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (3)");
  1313. #endif
  1314. #if NET_2_0
  1315. param = cmd.Parameters [3];
  1316. #else
  1317. param = cmd.Parameters [4];
  1318. #endif
  1319. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (4)");
  1320. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (4)");
  1321. #if NET_2_0
  1322. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (4)");
  1323. #else
  1324. Assert.IsTrue (param.IsNullable, prefix + "IsNullable (4)");
  1325. #endif
  1326. Assert.AreEqual (0, param.Offset, prefix + "Offset (4)");
  1327. #if NET_2_0
  1328. if (useColumnsForParameterNames)
  1329. Assert.AreEqual ("@Original_lname", param.ParameterName, prefix + "ParameterName (4)");
  1330. else
  1331. Assert.AreEqual ("@p4", param.ParameterName, prefix + "ParameterName (4)");
  1332. #else
  1333. Assert.AreEqual ("@p5", param.ParameterName, prefix + "ParameterName (4)");
  1334. #endif
  1335. Assert.AreEqual (0, param.Precision, prefix + "Precision (4)");
  1336. Assert.AreEqual (0, param.Scale, prefix + "Scale (4)");
  1337. Assert.AreEqual (0, param.Size, prefix + "Size (4)");
  1338. Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (4)");
  1339. #if NET_2_0
  1340. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (4)");
  1341. #endif
  1342. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (4)");
  1343. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (4)");
  1344. #if NET_2_0
  1345. Assert.IsNull (param.SqlValue, prefix + "SqlValue (4)");
  1346. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (4)");
  1347. #endif
  1348. Assert.IsNull (param.Value, prefix + "Value (4)");
  1349. #if NET_2_0
  1350. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (4)");
  1351. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (4)");
  1352. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (4)");
  1353. #endif
  1354. }
  1355. static void AssertInsertParameters (SqlCommand cmd, bool useColumnsForParameterNames, string prefix)
  1356. {
  1357. SqlParameter param;
  1358. Assert.AreEqual (3, cmd.Parameters.Count, prefix + "Count");
  1359. param = cmd.Parameters [0];
  1360. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (0)");
  1361. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (0)");
  1362. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (0)");
  1363. Assert.AreEqual (0, param.Offset, prefix + "Offset (0)");
  1364. if (useColumnsForParameterNames)
  1365. Assert.AreEqual ("@id", param.ParameterName, prefix + "ParameterName (0)");
  1366. else
  1367. Assert.AreEqual ("@p1", param.ParameterName, prefix + "ParameterName (0)");
  1368. Assert.AreEqual (10, param.Precision, prefix + "Precision (0)");
  1369. Assert.AreEqual (0, param.Scale, prefix + "Scale (0)");
  1370. //Assert.AreEqual (0, param.Size, prefix + "Size (0)");
  1371. Assert.AreEqual ("id", param.SourceColumn, prefix + "SourceColumn (0)");
  1372. #if NET_2_0
  1373. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (0)");
  1374. #endif
  1375. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (0)");
  1376. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (0)");
  1377. #if NET_2_0
  1378. Assert.IsNull (param.SqlValue, prefix + "SqlValue (0)");
  1379. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (0)");
  1380. #endif
  1381. Assert.IsNull (param.Value, prefix + "Value (0)");
  1382. #if NET_2_0
  1383. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (0)");
  1384. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (0)");
  1385. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (0)");
  1386. #endif
  1387. param = cmd.Parameters [1];
  1388. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (1)");
  1389. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (1)");
  1390. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (1)");
  1391. Assert.AreEqual (0, param.Offset, prefix + "Offset (1)");
  1392. if (useColumnsForParameterNames)
  1393. Assert.AreEqual ("@fname", param.ParameterName, prefix + "ParameterName (1)");
  1394. else
  1395. Assert.AreEqual ("@p2", param.ParameterName, prefix + "ParameterName (1)");
  1396. Assert.AreEqual (0, param.Precision, prefix + "Precision (1)");
  1397. Assert.AreEqual (0, param.Scale, prefix + "Scale (1)");
  1398. Assert.AreEqual (0, param.Size, prefix + "Size (1)");
  1399. Assert.AreEqual ("fname", param.SourceColumn, prefix + "SourceColumn (1)");
  1400. #if NET_2_0
  1401. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (1)");
  1402. #endif
  1403. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (1)");
  1404. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (1)");
  1405. #if NET_2_0
  1406. Assert.IsNull (param.SqlValue, prefix + "SqlValue (1)");
  1407. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (1)");
  1408. #endif
  1409. Assert.IsNull (param.Value, prefix + "Value (1)");
  1410. #if NET_2_0
  1411. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (1)");
  1412. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (1)");
  1413. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (1)");
  1414. #endif
  1415. param = cmd.Parameters [2];
  1416. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (2)");
  1417. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (2)");
  1418. #if NET_2_0
  1419. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (2)");
  1420. #else
  1421. Assert.IsTrue (param.IsNullable, prefix + "IsNullable (2)");
  1422. #endif
  1423. Assert.AreEqual (0, param.Offset, prefix + "Offset (2)");
  1424. if (useColumnsForParameterNames)
  1425. Assert.AreEqual ("@lname", param.ParameterName, prefix + "ParameterName (2)");
  1426. else
  1427. Assert.AreEqual ("@p3", param.ParameterName, prefix + "ParameterName (2)");
  1428. Assert.AreEqual (0, param.Precision, prefix + "Precision (2)");
  1429. Assert.AreEqual (0, param.Scale, prefix + "Scale (2)");
  1430. Assert.AreEqual (0, param.Size, prefix + "Size (2)");
  1431. Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (2)");
  1432. #if NET_2_0
  1433. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (2)");
  1434. #endif
  1435. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (2)");
  1436. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (2)");
  1437. #if NET_2_0
  1438. Assert.IsNull (param.SqlValue, prefix + "SqlValue (2)");
  1439. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (2)");
  1440. #endif
  1441. Assert.IsNull (param.Value, prefix + "Value (2)");
  1442. #if NET_2_0
  1443. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (2)");
  1444. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (2)");
  1445. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (2)");
  1446. #endif
  1447. }
  1448. static void AssertUpdateParameters (SqlCommand cmd, bool useColumnsForParameterNames, string prefix)
  1449. {
  1450. SqlParameter param;
  1451. #if NET_2_0
  1452. Assert.AreEqual (7, cmd.Parameters.Count, prefix + "Count");
  1453. #else
  1454. Assert.AreEqual (8, cmd.Parameters.Count, prefix + "Count");
  1455. #endif
  1456. param = cmd.Parameters [0];
  1457. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (0)");
  1458. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (0)");
  1459. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (0)");
  1460. Assert.AreEqual (0, param.Offset, prefix + "Offset (0)");
  1461. if (useColumnsForParameterNames)
  1462. Assert.AreEqual ("@id", param.ParameterName, prefix + "ParameterName (0)");
  1463. else
  1464. Assert.AreEqual ("@p1", param.ParameterName, prefix + "ParameterName (0)");
  1465. Assert.AreEqual (10, param.Precision, prefix + "Precision (0)");
  1466. Assert.AreEqual (0, param.Scale, prefix + "Scale (0)");
  1467. //Assert.AreEqual (0, param.Size, prefix + "Size (0)");
  1468. Assert.AreEqual ("id", param.SourceColumn, prefix + "SourceColumn (0)");
  1469. #if NET_2_0
  1470. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (0)");
  1471. #endif
  1472. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (0)");
  1473. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (0)");
  1474. #if NET_2_0
  1475. Assert.IsNull (param.SqlValue, prefix + "SqlValue (0)");
  1476. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (0)");
  1477. #endif
  1478. Assert.IsNull (param.Value, prefix + "Value (0)");
  1479. #if NET_2_0
  1480. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (0)");
  1481. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (0)");
  1482. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (0)");
  1483. #endif
  1484. param = cmd.Parameters [1];
  1485. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (1)");
  1486. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (1)");
  1487. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (1)");
  1488. Assert.AreEqual (0, param.Offset, prefix + "Offset (1)");
  1489. if (useColumnsForParameterNames)
  1490. Assert.AreEqual ("@fname", param.ParameterName, prefix + "ParameterName (1)");
  1491. else
  1492. Assert.AreEqual ("@p2", param.ParameterName, prefix + "ParameterName (1)");
  1493. Assert.AreEqual (0, param.Precision, prefix + "Precision (1)");
  1494. Assert.AreEqual (0, param.Scale, prefix + "Scale (1)");
  1495. //Assert.AreEqual (0, param.Size, prefix + "Size (1)");
  1496. Assert.AreEqual ("fname", param.SourceColumn, prefix + "SourceColumn (1)");
  1497. #if NET_2_0
  1498. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (1)");
  1499. #endif
  1500. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (1)");
  1501. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (1)");
  1502. #if NET_2_0
  1503. Assert.IsNull (param.SqlValue, prefix + "SqlValue (1)");
  1504. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (1)");
  1505. #endif
  1506. Assert.IsNull (param.Value, prefix + "Value (1)");
  1507. #if NET_2_0
  1508. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (1)");
  1509. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (1)");
  1510. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (1)");
  1511. #endif
  1512. param = cmd.Parameters [2];
  1513. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (2)");
  1514. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (2)");
  1515. #if NET_2_0
  1516. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (2)");
  1517. #else
  1518. Assert.IsTrue (param.IsNullable, prefix + "IsNullable (2)");
  1519. #endif
  1520. Assert.AreEqual (0, param.Offset, prefix + "Offset (2)");
  1521. if (useColumnsForParameterNames)
  1522. Assert.AreEqual ("@lname", param.ParameterName, prefix + "ParameterName (2)");
  1523. else
  1524. Assert.AreEqual ("@p3", param.ParameterName, prefix + "ParameterName (2)");
  1525. Assert.AreEqual (0, param.Precision, prefix + "Precision (2)");
  1526. Assert.AreEqual (0, param.Scale, prefix + "Scale (2)");
  1527. Assert.AreEqual (0, param.Size, prefix + "Size (2)");
  1528. Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (2)");
  1529. #if NET_2_0
  1530. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (2)");
  1531. #endif
  1532. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (2)");
  1533. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (2)");
  1534. #if NET_2_0
  1535. Assert.IsNull (param.SqlValue, prefix + "SqlValue (2)");
  1536. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (2)");
  1537. #endif
  1538. Assert.IsNull (param.Value, prefix + "Value (2)");
  1539. #if NET_2_0
  1540. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (2)");
  1541. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (2)");
  1542. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (2)");
  1543. #endif
  1544. param = cmd.Parameters [3];
  1545. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (3)");
  1546. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (3)");
  1547. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (3)");
  1548. Assert.AreEqual (0, param.Offset, prefix + "Offset (3)");
  1549. if (useColumnsForParameterNames)
  1550. Assert.AreEqual ("@Original_id", param.ParameterName, prefix + "ParameterName (3)");
  1551. else
  1552. Assert.AreEqual ("@p4", param.ParameterName, prefix + "ParameterName (3)");
  1553. Assert.AreEqual (10, param.Precision, prefix + "Precision (3)");
  1554. Assert.AreEqual (0, param.Scale, prefix + "Scale (3)");
  1555. //Assert.AreEqual (0, param.Size, prefix + "Size (3)");
  1556. Assert.AreEqual ("id", param.SourceColumn, prefix + "SourceColumn (3)");
  1557. #if NET_2_0
  1558. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (3)");
  1559. #endif
  1560. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (3)");
  1561. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (3)");
  1562. #if NET_2_0
  1563. Assert.IsNull (param.SqlValue, prefix + "SqlValue (3)");
  1564. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (3)");
  1565. #endif
  1566. Assert.IsNull (param.Value, prefix + "Value (3)");
  1567. #if NET_2_0
  1568. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (3)");
  1569. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (3)");
  1570. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (3)");
  1571. #endif
  1572. #if ONLY_1_1
  1573. param = cmd.Parameters [4];
  1574. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (4)");
  1575. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (4)");
  1576. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (4)");
  1577. Assert.AreEqual (0, param.Offset, prefix + "Offset (4)");
  1578. Assert.AreEqual ("@p5", param.ParameterName, prefix + "ParameterName (4)");
  1579. Assert.AreEqual (0, param.Precision, prefix + "Precision (4)");
  1580. Assert.AreEqual (0, param.Scale, prefix + "Scale (4)");
  1581. //Assert.AreEqual (0, param.Size, prefix + "Size (4)");
  1582. Assert.AreEqual (string.Empty, param.SourceColumn, prefix + "SourceColumn (4)");
  1583. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (4)");
  1584. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (4)");
  1585. Assert.AreEqual (1, param.Value, prefix + "Value (4)");
  1586. #endif
  1587. #if NET_2_0
  1588. param = cmd.Parameters [4];
  1589. #else
  1590. param = cmd.Parameters [5];
  1591. #endif
  1592. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (5)");
  1593. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (5)");
  1594. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (5)");
  1595. Assert.AreEqual (0, param.Offset, prefix + "Offset (5)");
  1596. if (useColumnsForParameterNames)
  1597. Assert.AreEqual ("@Original_fname", param.ParameterName, prefix + "ParameterName (5)");
  1598. else
  1599. #if NET_2_0
  1600. Assert.AreEqual ("@p5", param.ParameterName, prefix + "ParameterName (5)");
  1601. #else
  1602. Assert.AreEqual ("@p6", param.ParameterName, prefix + "ParameterName (5)");
  1603. #endif
  1604. Assert.AreEqual (0, param.Precision, prefix + "Precision (5)");
  1605. Assert.AreEqual (0, param.Scale, prefix + "Scale (5)");
  1606. Assert.AreEqual (0, param.Size, prefix + "Size (5)");
  1607. Assert.AreEqual ("fname", param.SourceColumn, prefix + "SourceColumn (5)");
  1608. #if NET_2_0
  1609. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (5)");
  1610. #endif
  1611. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (5)");
  1612. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (5)");
  1613. #if NET_2_0
  1614. Assert.IsNull (param.SqlValue, prefix + "SqlValue (5)");
  1615. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (5)");
  1616. #endif
  1617. Assert.IsNull (param.Value, prefix + "Value (5)");
  1618. #if NET_2_0
  1619. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (5)");
  1620. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (5)");
  1621. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (5)");
  1622. #endif
  1623. #if NET_2_0
  1624. param = cmd.Parameters [5];
  1625. #else
  1626. param = cmd.Parameters [6];
  1627. #endif
  1628. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (6)");
  1629. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (6)");
  1630. #if NET_2_0
  1631. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (6)");
  1632. #else
  1633. Assert.IsTrue (param.IsNullable, prefix + "IsNullable (6)");
  1634. #endif
  1635. Assert.AreEqual (0, param.Offset, prefix + "Offset (6)");
  1636. if (useColumnsForParameterNames)
  1637. Assert.AreEqual ("@IsNull_lname", param.ParameterName, prefix + "ParameterName (6)");
  1638. else
  1639. #if NET_2_0
  1640. Assert.AreEqual ("@p6", param.ParameterName, prefix + "ParameterName (6)");
  1641. #else
  1642. Assert.AreEqual ("@p7", param.ParameterName, prefix + "ParameterName (6)");
  1643. #endif
  1644. Assert.AreEqual (0, param.Precision, prefix + "Precision (6)");
  1645. Assert.AreEqual (0, param.Scale, prefix + "Scale (6)");
  1646. //Assert.AreEqual (0, param.Size, prefix + "Size (6)");
  1647. #if NET_2_0
  1648. Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (6)");
  1649. Assert.IsTrue (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (6)");
  1650. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (6)");
  1651. #else
  1652. Assert.AreEqual (string.Empty, param.SourceColumn, prefix + "SourceColumn (6)");
  1653. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (6)");
  1654. #endif
  1655. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (6)");
  1656. #if NET_2_0
  1657. Assert.IsNotNull (param.SqlValue, prefix + "SqlValue (6)");
  1658. Assert.AreEqual (typeof (SqlInt32), param.SqlValue.GetType (), prefix + "SqlValue (6)");
  1659. Assert.AreEqual (1, ((SqlInt32) param.SqlValue).Value, prefix + "SqlValue (6)");
  1660. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (6)");
  1661. #endif
  1662. Assert.AreEqual (1, param.Value, prefix + "Value (6)");
  1663. #if NET_2_0
  1664. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (6)");
  1665. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (6)");
  1666. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (6)");
  1667. #endif
  1668. #if NET_2_0
  1669. param = cmd.Parameters [6];
  1670. #else
  1671. param = cmd.Parameters [7];
  1672. #endif
  1673. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (7)");
  1674. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (7)");
  1675. #if NET_2_0
  1676. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (7)");
  1677. #else
  1678. Assert.IsTrue (param.IsNullable, prefix + "IsNullable (7)");
  1679. #endif
  1680. Assert.AreEqual (0, param.Offset, prefix + "Offset (7)");
  1681. if (useColumnsForParameterNames)
  1682. Assert.AreEqual ("@Original_lname", param.ParameterName, prefix + "ParameterName (7)");
  1683. else
  1684. #if NET_2_0
  1685. Assert.AreEqual ("@p7", param.ParameterName, prefix + "ParameterName (7)");
  1686. #else
  1687. Assert.AreEqual ("@p8", param.ParameterName, prefix + "ParameterName (7)");
  1688. #endif
  1689. Assert.AreEqual (0, param.Precision, prefix + "Precision (7)");
  1690. Assert.AreEqual (0, param.Scale, prefix + "Scale (7)");
  1691. Assert.AreEqual (0, param.Size, prefix + "Size (7)");
  1692. Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (7)");
  1693. #if NET_2_0
  1694. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (7)");
  1695. #endif
  1696. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (7)");
  1697. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (7)");
  1698. #if NET_2_0
  1699. Assert.IsNull (param.SqlValue, prefix + "SqlValue (7)");
  1700. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (7)");
  1701. #endif
  1702. Assert.IsNull (param.Value, prefix + "Value (7)");
  1703. #if NET_2_0
  1704. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (7)");
  1705. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (7)");
  1706. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (7)");
  1707. #endif
  1708. }
  1709. }
  1710. }