SqlCommandBuilderTest.cs 70 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819
  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 = (SqlConnection) ConnectionManager.Singleton.Connection;
  867. ConnectionManager.Singleton.OpenConnection ();
  868. SqlCommand cmd = null;
  869. try {
  870. cmd = conn.CreateCommand ();
  871. cmd.CommandText = "sp_326182";
  872. cmd.CommandType = CommandType.StoredProcedure;
  873. cmd.CommandTimeout = 90;
  874. cmd.Connection = conn;
  875. SqlCommandBuilder.DeriveParameters (cmd);
  876. Assert.AreEqual (5, cmd.Parameters.Count, "#4");
  877. } finally {
  878. if (cmd != null)
  879. cmd.Dispose ();
  880. ConnectionManager.Singleton.CloseConnection ();
  881. }
  882. }
  883. [Test]
  884. public void QuotePrefix_DeleteCommand_Generated ()
  885. {
  886. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  887. SqlCommand cmd = null;
  888. try {
  889. string selectQuery = "select id, lname from employee where id = 3";
  890. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  891. DataSet ds = new DataSet ();
  892. da.Fill (ds, "IntTest");
  893. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  894. cmd = cb.GetDeleteCommand ();
  895. #if NET_2_0
  896. Assert.AreEqual ("[", cb.QuotePrefix, "#1");
  897. #else
  898. Assert.AreEqual (string.Empty, cb.QuotePrefix, "#1");
  899. #endif
  900. try {
  901. cb.QuotePrefix = "\"";
  902. Assert.Fail ("#2");
  903. } catch (InvalidOperationException ex) {
  904. // The QuotePrefix and QuoteSuffix properties
  905. // cannot be changed once an Insert, Update, or
  906. // Delete command has been generated
  907. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
  908. Assert.IsNull (ex.InnerException, "#4");
  909. Assert.IsNotNull (ex.Message, "#5");
  910. }
  911. #if NET_2_0
  912. Assert.AreEqual ("[", cb.QuotePrefix, "#6");
  913. #else
  914. Assert.AreEqual (string.Empty, cb.QuotePrefix, "#6");
  915. #endif
  916. cb.RefreshSchema ();
  917. cb.QuotePrefix = "\"";
  918. } finally {
  919. if (cmd != null)
  920. cmd.Dispose ();
  921. ConnectionManager.Singleton.CloseConnection ();
  922. }
  923. }
  924. [Test]
  925. public void QuotePrefix_InsertCommand_Generated ()
  926. {
  927. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  928. SqlCommand cmd = null;
  929. try {
  930. string selectQuery = "select id, lname from employee where id = 3";
  931. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  932. DataSet ds = new DataSet ();
  933. da.Fill (ds, "IntTest");
  934. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  935. cmd = cb.GetInsertCommand ();
  936. #if NET_2_0
  937. Assert.AreEqual ("[", cb.QuotePrefix, "#1");
  938. #else
  939. Assert.AreEqual (string.Empty, cb.QuotePrefix, "#1");
  940. #endif
  941. try {
  942. cb.QuotePrefix = "\"";
  943. Assert.Fail ("#2");
  944. } catch (InvalidOperationException ex) {
  945. // The QuotePrefix and QuoteSuffix properties
  946. // cannot be changed once an Insert, Update, or
  947. // Delete command has been generated
  948. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
  949. Assert.IsNull (ex.InnerException, "#4");
  950. Assert.IsNotNull (ex.Message, "#5");
  951. }
  952. #if NET_2_0
  953. Assert.AreEqual ("[", cb.QuotePrefix, "#6");
  954. #else
  955. Assert.AreEqual (string.Empty, cb.QuotePrefix, "#6");
  956. #endif
  957. cb.RefreshSchema ();
  958. cb.QuotePrefix = "\"";
  959. } finally {
  960. if (cmd != null)
  961. cmd.Dispose ();
  962. ConnectionManager.Singleton.CloseConnection ();
  963. }
  964. }
  965. [Test]
  966. public void QuotePrefix_UpdateCommand_Generated ()
  967. {
  968. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  969. SqlCommand cmd = null;
  970. try {
  971. string selectQuery = "select id, lname from employee where id = 3";
  972. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  973. DataSet ds = new DataSet ();
  974. da.Fill (ds, "IntTest");
  975. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  976. cmd = cb.GetUpdateCommand ();
  977. #if NET_2_0
  978. Assert.AreEqual ("[", cb.QuotePrefix, "#1");
  979. #else
  980. Assert.AreEqual (string.Empty, cb.QuotePrefix, "#1");
  981. #endif
  982. try {
  983. cb.QuotePrefix = "\"";
  984. Assert.Fail ("#2");
  985. } catch (InvalidOperationException ex) {
  986. // The QuotePrefix and QuoteSuffix properties
  987. // cannot be changed once an Insert, Update, or
  988. // Delete command has been generated
  989. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
  990. Assert.IsNull (ex.InnerException, "#4");
  991. Assert.IsNotNull (ex.Message, "#5");
  992. }
  993. #if NET_2_0
  994. Assert.AreEqual ("[", cb.QuotePrefix, "#6");
  995. #else
  996. Assert.AreEqual (string.Empty, cb.QuotePrefix, "#6");
  997. #endif
  998. cb.RefreshSchema ();
  999. cb.QuotePrefix = "\"";
  1000. } finally {
  1001. if (cmd != null)
  1002. cmd.Dispose ();
  1003. ConnectionManager.Singleton.CloseConnection ();
  1004. }
  1005. }
  1006. [Test]
  1007. public void QuoteSuffix_DeleteCommand_Generated ()
  1008. {
  1009. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  1010. SqlCommand cmd = null;
  1011. try {
  1012. string selectQuery = "select id, lname from employee where id = 3";
  1013. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  1014. DataSet ds = new DataSet ();
  1015. da.Fill (ds, "IntTest");
  1016. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  1017. cmd = cb.GetDeleteCommand ();
  1018. #if NET_2_0
  1019. Assert.AreEqual ("]", cb.QuoteSuffix, "#1");
  1020. #else
  1021. Assert.AreEqual (string.Empty, cb.QuoteSuffix, "#1");
  1022. #endif
  1023. try {
  1024. cb.QuoteSuffix = "\"";
  1025. Assert.Fail ("#2");
  1026. } catch (InvalidOperationException ex) {
  1027. // The QuotePrefix and QuoteSuffix properties
  1028. // cannot be changed once an Insert, Update, or
  1029. // Delete command has been generated
  1030. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
  1031. Assert.IsNull (ex.InnerException, "#4");
  1032. Assert.IsNotNull (ex.Message, "#5");
  1033. }
  1034. #if NET_2_0
  1035. Assert.AreEqual ("]", cb.QuoteSuffix, "#6");
  1036. #else
  1037. Assert.AreEqual (string.Empty, cb.QuoteSuffix, "#6");
  1038. #endif
  1039. cb.RefreshSchema ();
  1040. cb.QuoteSuffix = "\"";
  1041. } finally {
  1042. if (cmd != null)
  1043. cmd.Dispose ();
  1044. ConnectionManager.Singleton.CloseConnection ();
  1045. }
  1046. }
  1047. [Test]
  1048. public void QuoteSuffix_InsertCommand_Generated ()
  1049. {
  1050. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  1051. SqlCommand cmd = null;
  1052. try {
  1053. string selectQuery = "select id, lname from employee where id = 3";
  1054. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  1055. DataSet ds = new DataSet ();
  1056. da.Fill (ds, "IntTest");
  1057. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  1058. cmd = cb.GetInsertCommand ();
  1059. #if NET_2_0
  1060. Assert.AreEqual ("]", cb.QuoteSuffix, "#1");
  1061. #else
  1062. Assert.AreEqual (string.Empty, cb.QuoteSuffix, "#1");
  1063. #endif
  1064. try {
  1065. cb.QuoteSuffix = "\"";
  1066. Assert.Fail ("#2");
  1067. } catch (InvalidOperationException ex) {
  1068. // The QuotePrefix and QuoteSuffix properties
  1069. // cannot be changed once an Insert, Update, or
  1070. // Delete command has been generated
  1071. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
  1072. Assert.IsNull (ex.InnerException, "#4");
  1073. Assert.IsNotNull (ex.Message, "#5");
  1074. }
  1075. #if NET_2_0
  1076. Assert.AreEqual ("]", cb.QuoteSuffix, "#6");
  1077. #else
  1078. Assert.AreEqual (string.Empty, cb.QuoteSuffix, "#6");
  1079. #endif
  1080. cb.RefreshSchema ();
  1081. cb.QuoteSuffix = "\"";
  1082. } finally {
  1083. if (cmd != null)
  1084. cmd.Dispose ();
  1085. ConnectionManager.Singleton.CloseConnection ();
  1086. }
  1087. }
  1088. [Test]
  1089. public void QuoteSuffix_UpdateCommand_Generated ()
  1090. {
  1091. SqlConnection conn = (SqlConnection) ConnectionManager.Singleton.Connection;
  1092. SqlCommand cmd = null;
  1093. try {
  1094. string selectQuery = "select id, lname from employee where id = 3";
  1095. SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
  1096. DataSet ds = new DataSet ();
  1097. da.Fill (ds, "IntTest");
  1098. SqlCommandBuilder cb = new SqlCommandBuilder (da);
  1099. cmd = cb.GetUpdateCommand ();
  1100. #if NET_2_0
  1101. Assert.AreEqual ("]", cb.QuoteSuffix, "#1");
  1102. #else
  1103. Assert.AreEqual (string.Empty, cb.QuoteSuffix, "#1");
  1104. #endif
  1105. try {
  1106. cb.QuoteSuffix = "\"";
  1107. Assert.Fail ("#2");
  1108. } catch (InvalidOperationException ex) {
  1109. // The QuotePrefix and QuoteSuffix properties
  1110. // cannot be changed once an Insert, Update, or
  1111. // Delete command has been generated
  1112. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
  1113. Assert.IsNull (ex.InnerException, "#4");
  1114. Assert.IsNotNull (ex.Message, "#5");
  1115. }
  1116. #if NET_2_0
  1117. Assert.AreEqual ("]", cb.QuoteSuffix, "#6");
  1118. #else
  1119. Assert.AreEqual (string.Empty, cb.QuoteSuffix, "#6");
  1120. #endif
  1121. cb.RefreshSchema ();
  1122. cb.QuoteSuffix = "\"";
  1123. } finally {
  1124. if (cmd != null)
  1125. cmd.Dispose ();
  1126. ConnectionManager.Singleton.CloseConnection ();
  1127. }
  1128. }
  1129. static void AssertDeleteParameters (SqlCommand cmd, bool useColumnsForParameterNames, string prefix)
  1130. {
  1131. SqlParameter param;
  1132. #if NET_2_0
  1133. Assert.AreEqual (4, cmd.Parameters.Count, prefix + "Count");
  1134. #else
  1135. Assert.AreEqual (5, cmd.Parameters.Count, prefix + "Count");
  1136. #endif
  1137. param = cmd.Parameters [0];
  1138. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (0)");
  1139. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (0)");
  1140. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (0)");
  1141. Assert.AreEqual (0, param.Offset, prefix + "Offset (0)");
  1142. if (useColumnsForParameterNames)
  1143. Assert.AreEqual ("@Original_id", param.ParameterName, prefix + "ParameterName (0)");
  1144. else
  1145. Assert.AreEqual ("@p1", param.ParameterName, prefix + "ParameterName (0)");
  1146. Assert.AreEqual (10, param.Precision, prefix + "Precision (0)");
  1147. Assert.AreEqual (0, param.Scale, prefix + "Scale (0)");
  1148. //Assert.AreEqual (0, param.Size, prefix + "Size (0)");
  1149. Assert.AreEqual ("id", param.SourceColumn, prefix + "SourceColumn (0)");
  1150. #if NET_2_0
  1151. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (0)");
  1152. #endif
  1153. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (0)");
  1154. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (0)");
  1155. #if NET_2_0
  1156. Assert.IsNull (param.SqlValue, prefix + "SqlValue (0)");
  1157. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (0)");
  1158. #endif
  1159. Assert.IsNull (param.Value, prefix + "Value (0)");
  1160. #if NET_2_0
  1161. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (0)");
  1162. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (0)");
  1163. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (0)");
  1164. #endif
  1165. #if ONLY_1_1
  1166. param = cmd.Parameters [1];
  1167. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (1)");
  1168. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (1)");
  1169. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (1)");
  1170. Assert.AreEqual (0, param.Offset, prefix + "Offset (1)");
  1171. Assert.AreEqual ("@p2", param.ParameterName, prefix + "ParameterName (1)");
  1172. Assert.AreEqual (0, param.Precision, prefix + "Precision (1)");
  1173. Assert.AreEqual (0, param.Scale, prefix + "Scale (1)");
  1174. //Assert.AreEqual (0, param.Size, prefix + "Size (1)");
  1175. Assert.AreEqual (string.Empty, param.SourceColumn, prefix + "SourceColumn (1)");
  1176. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (1)");
  1177. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (1)");
  1178. Assert.AreEqual (1, param.Value, prefix + "Value (1)");
  1179. #endif
  1180. #if NET_2_0
  1181. param = cmd.Parameters [1];
  1182. #else
  1183. param = cmd.Parameters [2];
  1184. #endif
  1185. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (2)");
  1186. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (2)");
  1187. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (2)");
  1188. Assert.AreEqual (0, param.Offset, prefix + "Offset (2)");
  1189. #if NET_2_0
  1190. if (useColumnsForParameterNames)
  1191. Assert.AreEqual ("@Original_fname", param.ParameterName, prefix + "ParameterName (2)");
  1192. else
  1193. Assert.AreEqual ("@p2", param.ParameterName, prefix + "ParameterName (2)");
  1194. #else
  1195. Assert.AreEqual ("@p3", param.ParameterName, prefix + "ParameterName (2)");
  1196. #endif
  1197. Assert.AreEqual (0, param.Precision, prefix + "Precision (2)");
  1198. Assert.AreEqual (0, param.Scale, prefix + "Scale (2)");
  1199. Assert.AreEqual (0, param.Size, prefix + "Size (2)");
  1200. Assert.AreEqual ("fname", param.SourceColumn, prefix + "SourceColumn (2)");
  1201. #if NET_2_0
  1202. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (2)");
  1203. #endif
  1204. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (2)");
  1205. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (2)");
  1206. #if NET_2_0
  1207. Assert.IsNull (param.SqlValue, prefix + "SqlValue (2)");
  1208. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (2)");
  1209. #endif
  1210. Assert.IsNull (param.Value, prefix + "Value (2)");
  1211. #if NET_2_0
  1212. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (2)");
  1213. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (2)");
  1214. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (2)");
  1215. #endif
  1216. #if NET_2_0
  1217. param = cmd.Parameters [2];
  1218. #else
  1219. param = cmd.Parameters [3];
  1220. #endif
  1221. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (3)");
  1222. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (3)");
  1223. #if NET_2_0
  1224. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (3)");
  1225. #else
  1226. Assert.IsTrue (param.IsNullable, prefix + "IsNullable (3)");
  1227. #endif
  1228. Assert.AreEqual (0, param.Offset, prefix + "Offset (3)");
  1229. #if NET_2_0
  1230. if (useColumnsForParameterNames)
  1231. Assert.AreEqual ("@IsNull_lname", param.ParameterName, prefix + "ParameterName (3)");
  1232. else
  1233. Assert.AreEqual ("@p3", param.ParameterName, prefix + "ParameterName (3)");
  1234. #else
  1235. Assert.AreEqual ("@p4", param.ParameterName, prefix + "ParameterName (3)");
  1236. #endif
  1237. Assert.AreEqual (0, param.Precision, prefix + "Precision (3)");
  1238. Assert.AreEqual (0, param.Scale, prefix + "Scale (3)");
  1239. //Assert.AreEqual (0, param.Size, prefix + "Size (3)");
  1240. #if NET_2_0
  1241. Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (3)");
  1242. Assert.IsTrue (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (3)");
  1243. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (3)");
  1244. #else
  1245. Assert.AreEqual (string.Empty, param.SourceColumn, prefix + "SourceColumn (3)");
  1246. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (3)");
  1247. #endif
  1248. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (3)");
  1249. #if NET_2_0
  1250. Assert.IsNotNull (param.SqlValue, prefix + "SqlValue (3)");
  1251. Assert.AreEqual (typeof (SqlInt32), param.SqlValue.GetType (), prefix + "SqlValue (3)");
  1252. Assert.AreEqual (1, ((SqlInt32) param.SqlValue).Value, prefix + "SqlValue (3)");
  1253. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (3)");
  1254. #endif
  1255. Assert.AreEqual (1, param.Value, prefix + "Value (3)");
  1256. #if NET_2_0
  1257. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (3)");
  1258. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (3)");
  1259. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (3)");
  1260. #endif
  1261. #if NET_2_0
  1262. param = cmd.Parameters [3];
  1263. #else
  1264. param = cmd.Parameters [4];
  1265. #endif
  1266. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (4)");
  1267. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (4)");
  1268. #if NET_2_0
  1269. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (4)");
  1270. #else
  1271. Assert.IsTrue (param.IsNullable, prefix + "IsNullable (4)");
  1272. #endif
  1273. Assert.AreEqual (0, param.Offset, prefix + "Offset (4)");
  1274. #if NET_2_0
  1275. if (useColumnsForParameterNames)
  1276. Assert.AreEqual ("@Original_lname", param.ParameterName, prefix + "ParameterName (4)");
  1277. else
  1278. Assert.AreEqual ("@p4", param.ParameterName, prefix + "ParameterName (4)");
  1279. #else
  1280. Assert.AreEqual ("@p5", param.ParameterName, prefix + "ParameterName (4)");
  1281. #endif
  1282. Assert.AreEqual (0, param.Precision, prefix + "Precision (4)");
  1283. Assert.AreEqual (0, param.Scale, prefix + "Scale (4)");
  1284. Assert.AreEqual (0, param.Size, prefix + "Size (4)");
  1285. Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (4)");
  1286. #if NET_2_0
  1287. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (4)");
  1288. #endif
  1289. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (4)");
  1290. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (4)");
  1291. #if NET_2_0
  1292. Assert.IsNull (param.SqlValue, prefix + "SqlValue (4)");
  1293. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (4)");
  1294. #endif
  1295. Assert.IsNull (param.Value, prefix + "Value (4)");
  1296. #if NET_2_0
  1297. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (4)");
  1298. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (4)");
  1299. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (4)");
  1300. #endif
  1301. }
  1302. static void AssertInsertParameters (SqlCommand cmd, bool useColumnsForParameterNames, string prefix)
  1303. {
  1304. SqlParameter param;
  1305. Assert.AreEqual (3, cmd.Parameters.Count, prefix + "Count");
  1306. param = cmd.Parameters [0];
  1307. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (0)");
  1308. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (0)");
  1309. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (0)");
  1310. Assert.AreEqual (0, param.Offset, prefix + "Offset (0)");
  1311. if (useColumnsForParameterNames)
  1312. Assert.AreEqual ("@id", param.ParameterName, prefix + "ParameterName (0)");
  1313. else
  1314. Assert.AreEqual ("@p1", param.ParameterName, prefix + "ParameterName (0)");
  1315. Assert.AreEqual (10, param.Precision, prefix + "Precision (0)");
  1316. Assert.AreEqual (0, param.Scale, prefix + "Scale (0)");
  1317. //Assert.AreEqual (0, param.Size, prefix + "Size (0)");
  1318. Assert.AreEqual ("id", param.SourceColumn, prefix + "SourceColumn (0)");
  1319. #if NET_2_0
  1320. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (0)");
  1321. #endif
  1322. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (0)");
  1323. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (0)");
  1324. #if NET_2_0
  1325. Assert.IsNull (param.SqlValue, prefix + "SqlValue (0)");
  1326. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (0)");
  1327. #endif
  1328. Assert.IsNull (param.Value, prefix + "Value (0)");
  1329. #if NET_2_0
  1330. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (0)");
  1331. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (0)");
  1332. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (0)");
  1333. #endif
  1334. param = cmd.Parameters [1];
  1335. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (1)");
  1336. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (1)");
  1337. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (1)");
  1338. Assert.AreEqual (0, param.Offset, prefix + "Offset (1)");
  1339. if (useColumnsForParameterNames)
  1340. Assert.AreEqual ("@fname", param.ParameterName, prefix + "ParameterName (1)");
  1341. else
  1342. Assert.AreEqual ("@p2", param.ParameterName, prefix + "ParameterName (1)");
  1343. Assert.AreEqual (0, param.Precision, prefix + "Precision (1)");
  1344. Assert.AreEqual (0, param.Scale, prefix + "Scale (1)");
  1345. Assert.AreEqual (0, param.Size, prefix + "Size (1)");
  1346. Assert.AreEqual ("fname", param.SourceColumn, prefix + "SourceColumn (1)");
  1347. #if NET_2_0
  1348. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (1)");
  1349. #endif
  1350. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (1)");
  1351. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (1)");
  1352. #if NET_2_0
  1353. Assert.IsNull (param.SqlValue, prefix + "SqlValue (1)");
  1354. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (1)");
  1355. #endif
  1356. Assert.IsNull (param.Value, prefix + "Value (1)");
  1357. #if NET_2_0
  1358. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (1)");
  1359. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (1)");
  1360. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (1)");
  1361. #endif
  1362. param = cmd.Parameters [2];
  1363. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (2)");
  1364. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (2)");
  1365. #if NET_2_0
  1366. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (2)");
  1367. #else
  1368. Assert.IsTrue (param.IsNullable, prefix + "IsNullable (2)");
  1369. #endif
  1370. Assert.AreEqual (0, param.Offset, prefix + "Offset (2)");
  1371. if (useColumnsForParameterNames)
  1372. Assert.AreEqual ("@lname", param.ParameterName, prefix + "ParameterName (2)");
  1373. else
  1374. Assert.AreEqual ("@p3", param.ParameterName, prefix + "ParameterName (2)");
  1375. Assert.AreEqual (0, param.Precision, prefix + "Precision (2)");
  1376. Assert.AreEqual (0, param.Scale, prefix + "Scale (2)");
  1377. Assert.AreEqual (0, param.Size, prefix + "Size (2)");
  1378. Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (2)");
  1379. #if NET_2_0
  1380. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (2)");
  1381. #endif
  1382. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (2)");
  1383. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (2)");
  1384. #if NET_2_0
  1385. Assert.IsNull (param.SqlValue, prefix + "SqlValue (2)");
  1386. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (2)");
  1387. #endif
  1388. Assert.IsNull (param.Value, prefix + "Value (2)");
  1389. #if NET_2_0
  1390. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (2)");
  1391. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (2)");
  1392. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (2)");
  1393. #endif
  1394. }
  1395. static void AssertUpdateParameters (SqlCommand cmd, bool useColumnsForParameterNames, string prefix)
  1396. {
  1397. SqlParameter param;
  1398. #if NET_2_0
  1399. Assert.AreEqual (7, cmd.Parameters.Count, prefix + "Count");
  1400. #else
  1401. Assert.AreEqual (8, cmd.Parameters.Count, prefix + "Count");
  1402. #endif
  1403. param = cmd.Parameters [0];
  1404. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (0)");
  1405. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (0)");
  1406. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (0)");
  1407. Assert.AreEqual (0, param.Offset, prefix + "Offset (0)");
  1408. if (useColumnsForParameterNames)
  1409. Assert.AreEqual ("@id", param.ParameterName, prefix + "ParameterName (0)");
  1410. else
  1411. Assert.AreEqual ("@p1", param.ParameterName, prefix + "ParameterName (0)");
  1412. Assert.AreEqual (10, param.Precision, prefix + "Precision (0)");
  1413. Assert.AreEqual (0, param.Scale, prefix + "Scale (0)");
  1414. //Assert.AreEqual (0, param.Size, prefix + "Size (0)");
  1415. Assert.AreEqual ("id", param.SourceColumn, prefix + "SourceColumn (0)");
  1416. #if NET_2_0
  1417. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (0)");
  1418. #endif
  1419. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (0)");
  1420. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (0)");
  1421. #if NET_2_0
  1422. Assert.IsNull (param.SqlValue, prefix + "SqlValue (0)");
  1423. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (0)");
  1424. #endif
  1425. Assert.IsNull (param.Value, prefix + "Value (0)");
  1426. #if NET_2_0
  1427. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (0)");
  1428. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (0)");
  1429. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (0)");
  1430. #endif
  1431. param = cmd.Parameters [1];
  1432. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (1)");
  1433. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (1)");
  1434. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (1)");
  1435. Assert.AreEqual (0, param.Offset, prefix + "Offset (1)");
  1436. if (useColumnsForParameterNames)
  1437. Assert.AreEqual ("@fname", param.ParameterName, prefix + "ParameterName (1)");
  1438. else
  1439. Assert.AreEqual ("@p2", param.ParameterName, prefix + "ParameterName (1)");
  1440. Assert.AreEqual (0, param.Precision, prefix + "Precision (1)");
  1441. Assert.AreEqual (0, param.Scale, prefix + "Scale (1)");
  1442. //Assert.AreEqual (0, param.Size, prefix + "Size (1)");
  1443. Assert.AreEqual ("fname", param.SourceColumn, prefix + "SourceColumn (1)");
  1444. #if NET_2_0
  1445. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (1)");
  1446. #endif
  1447. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (1)");
  1448. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (1)");
  1449. #if NET_2_0
  1450. Assert.IsNull (param.SqlValue, prefix + "SqlValue (1)");
  1451. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (1)");
  1452. #endif
  1453. Assert.IsNull (param.Value, prefix + "Value (1)");
  1454. #if NET_2_0
  1455. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (1)");
  1456. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (1)");
  1457. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (1)");
  1458. #endif
  1459. param = cmd.Parameters [2];
  1460. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (2)");
  1461. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (2)");
  1462. #if NET_2_0
  1463. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (2)");
  1464. #else
  1465. Assert.IsTrue (param.IsNullable, prefix + "IsNullable (2)");
  1466. #endif
  1467. Assert.AreEqual (0, param.Offset, prefix + "Offset (2)");
  1468. if (useColumnsForParameterNames)
  1469. Assert.AreEqual ("@lname", param.ParameterName, prefix + "ParameterName (2)");
  1470. else
  1471. Assert.AreEqual ("@p3", param.ParameterName, prefix + "ParameterName (2)");
  1472. Assert.AreEqual (0, param.Precision, prefix + "Precision (2)");
  1473. Assert.AreEqual (0, param.Scale, prefix + "Scale (2)");
  1474. Assert.AreEqual (0, param.Size, prefix + "Size (2)");
  1475. Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (2)");
  1476. #if NET_2_0
  1477. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (2)");
  1478. #endif
  1479. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (2)");
  1480. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (2)");
  1481. #if NET_2_0
  1482. Assert.IsNull (param.SqlValue, prefix + "SqlValue (2)");
  1483. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (2)");
  1484. #endif
  1485. Assert.IsNull (param.Value, prefix + "Value (2)");
  1486. #if NET_2_0
  1487. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (2)");
  1488. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (2)");
  1489. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (2)");
  1490. #endif
  1491. param = cmd.Parameters [3];
  1492. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (3)");
  1493. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (3)");
  1494. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (3)");
  1495. Assert.AreEqual (0, param.Offset, prefix + "Offset (3)");
  1496. if (useColumnsForParameterNames)
  1497. Assert.AreEqual ("@Original_id", param.ParameterName, prefix + "ParameterName (3)");
  1498. else
  1499. Assert.AreEqual ("@p4", param.ParameterName, prefix + "ParameterName (3)");
  1500. Assert.AreEqual (10, param.Precision, prefix + "Precision (3)");
  1501. Assert.AreEqual (0, param.Scale, prefix + "Scale (3)");
  1502. //Assert.AreEqual (0, param.Size, prefix + "Size (3)");
  1503. Assert.AreEqual ("id", param.SourceColumn, prefix + "SourceColumn (3)");
  1504. #if NET_2_0
  1505. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (3)");
  1506. #endif
  1507. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (3)");
  1508. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (3)");
  1509. #if NET_2_0
  1510. Assert.IsNull (param.SqlValue, prefix + "SqlValue (3)");
  1511. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (3)");
  1512. #endif
  1513. Assert.IsNull (param.Value, prefix + "Value (3)");
  1514. #if NET_2_0
  1515. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (3)");
  1516. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (3)");
  1517. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (3)");
  1518. #endif
  1519. #if ONLY_1_1
  1520. param = cmd.Parameters [4];
  1521. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (4)");
  1522. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (4)");
  1523. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (4)");
  1524. Assert.AreEqual (0, param.Offset, prefix + "Offset (4)");
  1525. Assert.AreEqual ("@p5", param.ParameterName, prefix + "ParameterName (4)");
  1526. Assert.AreEqual (0, param.Precision, prefix + "Precision (4)");
  1527. Assert.AreEqual (0, param.Scale, prefix + "Scale (4)");
  1528. //Assert.AreEqual (0, param.Size, prefix + "Size (4)");
  1529. Assert.AreEqual (string.Empty, param.SourceColumn, prefix + "SourceColumn (4)");
  1530. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (4)");
  1531. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (4)");
  1532. Assert.AreEqual (1, param.Value, prefix + "Value (4)");
  1533. #endif
  1534. #if NET_2_0
  1535. param = cmd.Parameters [4];
  1536. #else
  1537. param = cmd.Parameters [5];
  1538. #endif
  1539. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (5)");
  1540. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (5)");
  1541. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (5)");
  1542. Assert.AreEqual (0, param.Offset, prefix + "Offset (5)");
  1543. if (useColumnsForParameterNames)
  1544. Assert.AreEqual ("@Original_fname", param.ParameterName, prefix + "ParameterName (5)");
  1545. else
  1546. #if NET_2_0
  1547. Assert.AreEqual ("@p5", param.ParameterName, prefix + "ParameterName (5)");
  1548. #else
  1549. Assert.AreEqual ("@p6", param.ParameterName, prefix + "ParameterName (5)");
  1550. #endif
  1551. Assert.AreEqual (0, param.Precision, prefix + "Precision (5)");
  1552. Assert.AreEqual (0, param.Scale, prefix + "Scale (5)");
  1553. Assert.AreEqual (0, param.Size, prefix + "Size (5)");
  1554. Assert.AreEqual ("fname", param.SourceColumn, prefix + "SourceColumn (5)");
  1555. #if NET_2_0
  1556. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (5)");
  1557. #endif
  1558. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (5)");
  1559. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (5)");
  1560. #if NET_2_0
  1561. Assert.IsNull (param.SqlValue, prefix + "SqlValue (5)");
  1562. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (5)");
  1563. #endif
  1564. Assert.IsNull (param.Value, prefix + "Value (5)");
  1565. #if NET_2_0
  1566. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (5)");
  1567. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (5)");
  1568. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (5)");
  1569. #endif
  1570. #if NET_2_0
  1571. param = cmd.Parameters [5];
  1572. #else
  1573. param = cmd.Parameters [6];
  1574. #endif
  1575. Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (6)");
  1576. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (6)");
  1577. #if NET_2_0
  1578. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (6)");
  1579. #else
  1580. Assert.IsTrue (param.IsNullable, prefix + "IsNullable (6)");
  1581. #endif
  1582. Assert.AreEqual (0, param.Offset, prefix + "Offset (6)");
  1583. if (useColumnsForParameterNames)
  1584. Assert.AreEqual ("@IsNull_lname", param.ParameterName, prefix + "ParameterName (6)");
  1585. else
  1586. #if NET_2_0
  1587. Assert.AreEqual ("@p6", param.ParameterName, prefix + "ParameterName (6)");
  1588. #else
  1589. Assert.AreEqual ("@p7", param.ParameterName, prefix + "ParameterName (6)");
  1590. #endif
  1591. Assert.AreEqual (0, param.Precision, prefix + "Precision (6)");
  1592. Assert.AreEqual (0, param.Scale, prefix + "Scale (6)");
  1593. //Assert.AreEqual (0, param.Size, prefix + "Size (6)");
  1594. #if NET_2_0
  1595. Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (6)");
  1596. Assert.IsTrue (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (6)");
  1597. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (6)");
  1598. #else
  1599. Assert.AreEqual (string.Empty, param.SourceColumn, prefix + "SourceColumn (6)");
  1600. Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (6)");
  1601. #endif
  1602. Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (6)");
  1603. #if NET_2_0
  1604. Assert.IsNotNull (param.SqlValue, prefix + "SqlValue (6)");
  1605. Assert.AreEqual (typeof (SqlInt32), param.SqlValue.GetType (), prefix + "SqlValue (6)");
  1606. Assert.AreEqual (1, ((SqlInt32) param.SqlValue).Value, prefix + "SqlValue (6)");
  1607. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (6)");
  1608. #endif
  1609. Assert.AreEqual (1, param.Value, prefix + "Value (6)");
  1610. #if NET_2_0
  1611. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (6)");
  1612. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (6)");
  1613. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (6)");
  1614. #endif
  1615. #if NET_2_0
  1616. param = cmd.Parameters [6];
  1617. #else
  1618. param = cmd.Parameters [7];
  1619. #endif
  1620. Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (7)");
  1621. Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (7)");
  1622. #if NET_2_0
  1623. Assert.IsFalse (param.IsNullable, prefix + "IsNullable (7)");
  1624. #else
  1625. Assert.IsTrue (param.IsNullable, prefix + "IsNullable (7)");
  1626. #endif
  1627. Assert.AreEqual (0, param.Offset, prefix + "Offset (7)");
  1628. if (useColumnsForParameterNames)
  1629. Assert.AreEqual ("@Original_lname", param.ParameterName, prefix + "ParameterName (7)");
  1630. else
  1631. #if NET_2_0
  1632. Assert.AreEqual ("@p7", param.ParameterName, prefix + "ParameterName (7)");
  1633. #else
  1634. Assert.AreEqual ("@p8", param.ParameterName, prefix + "ParameterName (7)");
  1635. #endif
  1636. Assert.AreEqual (0, param.Precision, prefix + "Precision (7)");
  1637. Assert.AreEqual (0, param.Scale, prefix + "Scale (7)");
  1638. Assert.AreEqual (0, param.Size, prefix + "Size (7)");
  1639. Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (7)");
  1640. #if NET_2_0
  1641. Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (7)");
  1642. #endif
  1643. Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (7)");
  1644. Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (7)");
  1645. #if NET_2_0
  1646. Assert.IsNull (param.SqlValue, prefix + "SqlValue (7)");
  1647. //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (7)");
  1648. #endif
  1649. Assert.IsNull (param.Value, prefix + "Value (7)");
  1650. #if NET_2_0
  1651. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (7)");
  1652. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (7)");
  1653. Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (7)");
  1654. #endif
  1655. }
  1656. }
  1657. }