SqlCommandBuilderTest.cs 70 KB

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