OdbcParameterTest.cs 150 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303
  1. // OdbcCommandTest.cs - NUnit Test Cases for testing the
  2. // OdbcCommand class
  3. //
  4. // Authors:
  5. // Sureshkumar T ([email protected])
  6. // Gert Driesen ([email protected])
  7. //
  8. // Copyright (c) 2005-2008 Novell Inc., and the individuals listed
  9. // on the ChangeLog entries.
  10. //
  11. // Permission is hereby granted, free of charge, to any person obtaining
  12. // a copy of this software and associated documentation files (the
  13. // "Software"), to deal in the Software without restriction, including
  14. // without limitation the rights to use, copy, modify, merge, publish,
  15. // distribute, sublicense, and/or sell copies of the Software, and to
  16. // permit persons to whom the Software is furnished to do so, subject to
  17. // 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 BE
  26. // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  27. // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  28. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  29. //
  30. using System;
  31. using System.Data;
  32. using System.Data.Common;
  33. using System.Data.Odbc;
  34. using System.Globalization;
  35. using System.Text;
  36. using System.Threading;
  37. using NUnit.Framework;
  38. namespace MonoTests.System.Data.Connected.Odbc
  39. {
  40. [TestFixture]
  41. [Category ("odbc")]
  42. public class OdbcParameterTest
  43. {
  44. private CultureInfo _originalCulture;
  45. [SetUp]
  46. public void Setup ()
  47. {
  48. _originalCulture = Thread.CurrentThread.CurrentCulture;
  49. Thread.CurrentThread.CurrentCulture = new CultureInfo ("nl-BE");
  50. }
  51. [TearDown]
  52. public void TearDown ()
  53. {
  54. Thread.CurrentThread.CurrentCulture = _originalCulture;
  55. }
  56. [Test]
  57. public void IntegerParamTest ()
  58. {
  59. string insert_data = "insert into numeric_family (id, type_int) values (6000, ?)";
  60. string select_data = "select id, type_int from numeric_family where type_int = ? and id = ?";
  61. string select_by_id = "select id, type_int from numeric_family where id = ?";
  62. string delete_data = "delete from numeric_family where id = 6000";
  63. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  64. IDataReader dr = null;
  65. OdbcCommand cmd = null;
  66. OdbcParameter param;
  67. try {
  68. cmd = (OdbcCommand) conn.CreateCommand ();
  69. cmd.CommandText = select_data;
  70. param = cmd.Parameters.Add ("type_int", OdbcType.Int);
  71. param.Value = int.MaxValue;
  72. param = cmd.Parameters.Add ("id", OdbcType.Int);
  73. param.Value = 1;
  74. dr = cmd.ExecuteReader ();
  75. Assert.IsTrue (dr.Read (), "#A1");
  76. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
  77. Assert.AreEqual (1, dr.GetValue (0), "#A2");
  78. Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#A3");
  79. Assert.AreEqual (int.MaxValue, dr.GetValue (1), "#A4");
  80. Assert.IsFalse (dr.Read (), "#A5");
  81. dr.Close ();
  82. cmd.Dispose ();
  83. cmd = (OdbcCommand) conn.CreateCommand ();
  84. cmd.CommandText = select_data;
  85. param = cmd.Parameters.Add ("type_int", OdbcType.Int);
  86. param.Value = int.MinValue;
  87. param = cmd.Parameters.Add ("id", OdbcType.Int);
  88. param.Value = 2;
  89. dr = cmd.ExecuteReader ();
  90. Assert.IsTrue (dr.Read (), "#B1");
  91. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  92. Assert.AreEqual (2, dr.GetValue (0), "#B2");
  93. Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#B3");
  94. Assert.AreEqual (int.MinValue, dr.GetValue (1), "#B4");
  95. Assert.IsFalse (dr.Read (), "#B5");
  96. dr.Close ();
  97. cmd.Dispose ();
  98. cmd = (OdbcCommand) conn.CreateCommand ();
  99. cmd.CommandText = select_data;
  100. param = cmd.Parameters.Add ("type_int", OdbcType.Int);
  101. param.Value = 0;
  102. param = cmd.Parameters.Add ("id", OdbcType.Int);
  103. param.Value = 3;
  104. dr = cmd.ExecuteReader ();
  105. Assert.IsTrue (dr.Read (), "#C1");
  106. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
  107. Assert.AreEqual (3, dr.GetValue (0), "#C2");
  108. Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#C3");
  109. Assert.AreEqual (0, dr.GetValue (1), "#C4");
  110. Assert.IsFalse (dr.Read (), "#C5");
  111. dr.Close ();
  112. cmd.Dispose ();
  113. cmd = (OdbcCommand) conn.CreateCommand ();
  114. cmd.CommandText = select_by_id;
  115. param = cmd.Parameters.Add ("id", OdbcType.Int);
  116. param.Value = 4;
  117. dr = cmd.ExecuteReader ();
  118. Assert.IsTrue (dr.Read (), "#D1");
  119. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  120. Assert.AreEqual (4, dr.GetValue (0), "#D3");
  121. Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#D4");
  122. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
  123. Assert.IsFalse (dr.Read (), "#D6");
  124. dr.Close ();
  125. cmd.Dispose ();
  126. cmd = (OdbcCommand) conn.CreateCommand ();
  127. cmd.CommandText = insert_data;
  128. param = cmd.Parameters.Add ("type_int", OdbcType.Int);
  129. param.Value = int.MaxValue;
  130. cmd.ExecuteNonQuery ();
  131. cmd.Dispose ();
  132. cmd = (OdbcCommand) conn.CreateCommand ();
  133. cmd.CommandText = select_by_id;
  134. param = cmd.Parameters.Add ("id", OdbcType.Int);
  135. param.Value = 6000;
  136. dr = cmd.ExecuteReader ();
  137. Assert.IsTrue (dr.Read (), "#E1");
  138. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
  139. Assert.AreEqual (6000, dr.GetValue (0), "#E3");
  140. Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#E4");
  141. Assert.AreEqual (int.MaxValue, dr.GetValue (1), "#E5");
  142. Assert.IsFalse (dr.Read (), "#E6");
  143. dr.Close ();
  144. cmd.Dispose ();
  145. DBHelper.ExecuteNonQuery (conn, delete_data);
  146. cmd = (OdbcCommand) conn.CreateCommand ();
  147. cmd.CommandText = insert_data;
  148. param = cmd.Parameters.Add ("type_int", OdbcType.Int);
  149. param.Value = int.MinValue;
  150. cmd.ExecuteNonQuery ();
  151. cmd.Dispose ();
  152. cmd = (OdbcCommand) conn.CreateCommand ();
  153. cmd.CommandText = select_by_id;
  154. param = cmd.Parameters.Add ("id", OdbcType.Int);
  155. param.Value = 6000;
  156. dr = cmd.ExecuteReader ();
  157. Assert.IsTrue (dr.Read (), "#F1");
  158. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
  159. Assert.AreEqual (6000, dr.GetValue (0), "#F3");
  160. Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#F4");
  161. Assert.AreEqual (int.MinValue, dr.GetValue (1), "#F5");
  162. Assert.IsFalse (dr.Read (), "#F6");
  163. dr.Close ();
  164. cmd.Dispose ();
  165. DBHelper.ExecuteNonQuery (conn, delete_data);
  166. cmd = (OdbcCommand) conn.CreateCommand ();
  167. cmd.CommandText = insert_data;
  168. param = cmd.Parameters.Add ("type_int", OdbcType.Int);
  169. param.Value = 0;
  170. cmd.ExecuteNonQuery ();
  171. cmd.Dispose ();
  172. cmd = (OdbcCommand) conn.CreateCommand ();
  173. cmd.CommandText = select_by_id;
  174. param = cmd.Parameters.Add ("id", OdbcType.Int);
  175. param.Value = 6000;
  176. dr = cmd.ExecuteReader ();
  177. Assert.IsTrue (dr.Read (), "#G1");
  178. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
  179. Assert.AreEqual (6000, dr.GetValue (0), "#G3");
  180. Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#G4");
  181. Assert.AreEqual (0, dr.GetValue (1), "#G5");
  182. Assert.IsFalse (dr.Read (), "#G6");
  183. dr.Close ();
  184. cmd.Dispose ();
  185. DBHelper.ExecuteNonQuery (conn, delete_data);
  186. cmd = (OdbcCommand) conn.CreateCommand ();
  187. cmd.CommandText = insert_data;
  188. param = cmd.Parameters.Add ("type_int", OdbcType.Int);
  189. param.Value = DBNull.Value;
  190. cmd.ExecuteNonQuery ();
  191. cmd.Dispose ();
  192. cmd = (OdbcCommand) conn.CreateCommand ();
  193. cmd.CommandText = select_by_id;
  194. param = cmd.Parameters.Add ("id", OdbcType.Int);
  195. param.Value = 6000;
  196. dr = cmd.ExecuteReader ();
  197. Assert.IsTrue (dr.Read (), "#H1");
  198. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
  199. Assert.AreEqual (6000, dr.GetValue (0), "#H3");
  200. Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#H4");
  201. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#H5");
  202. Assert.IsFalse (dr.Read (), "#H6");
  203. dr.Close ();
  204. cmd.Dispose ();
  205. } finally {
  206. if (dr != null)
  207. dr.Close ();
  208. if (cmd != null)
  209. cmd.Dispose ();
  210. conn.Close ();
  211. conn.Open ();
  212. DBHelper.ExecuteNonQuery (conn, delete_data);
  213. conn.Close ();
  214. }
  215. }
  216. [Test]
  217. public void BigIntParamTest ()
  218. {
  219. string insert_data = "insert into numeric_family (id, type_bigint) values (6000, ?)";
  220. string select_data = "select id, type_bigint from numeric_family where type_bigint = ? and id = ?";
  221. string select_by_id = "select id, type_bigint from numeric_family where id = ?";
  222. string delete_data = "delete from numeric_family where id = 6000";
  223. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  224. IDataReader dr = null;
  225. OdbcCommand cmd = null;
  226. OdbcParameter param;
  227. try {
  228. cmd = (OdbcCommand) conn.CreateCommand ();
  229. cmd.CommandText = select_data;
  230. param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
  231. param.Value = 9223372036854775807L;
  232. param = cmd.Parameters.Add ("id", OdbcType.Int);
  233. param.Value = 1;
  234. dr = cmd.ExecuteReader ();
  235. Assert.IsTrue (dr.Read (), "#A1");
  236. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
  237. Assert.AreEqual (1, dr.GetValue (0), "#A3");
  238. Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#A4");
  239. Assert.AreEqual (9223372036854775807L, dr.GetValue (1), "#A5");
  240. Assert.IsFalse (dr.Read (), "#A6");
  241. dr.Close ();
  242. cmd.Dispose ();
  243. cmd = (OdbcCommand) conn.CreateCommand ();
  244. cmd.CommandText = select_data;
  245. param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
  246. param.Value = -9223372036854775808L;
  247. param = cmd.Parameters.Add ("id", OdbcType.Int);
  248. param.Value = 2;
  249. dr = cmd.ExecuteReader ();
  250. Assert.IsTrue (dr.Read (), "#A1");
  251. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  252. Assert.AreEqual (2, dr.GetValue (0), "#B3");
  253. Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#B4");
  254. Assert.AreEqual (-9223372036854775808L, dr.GetValue (1), "#B5");
  255. Assert.IsFalse (dr.Read (), "#B6");
  256. dr.Close ();
  257. cmd.Dispose ();
  258. cmd = (OdbcCommand) conn.CreateCommand ();
  259. cmd.CommandText = select_data;
  260. param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
  261. param.Value = 0L;
  262. param = cmd.Parameters.Add ("id", OdbcType.Int);
  263. param.Value = 3;
  264. dr = cmd.ExecuteReader ();
  265. Assert.IsTrue (dr.Read (), "#C1");
  266. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
  267. Assert.AreEqual (3, dr.GetValue (0), "#C3");
  268. Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#C4");
  269. Assert.AreEqual (0L, dr.GetValue (1), "#C5");
  270. Assert.IsFalse (dr.Read (), "#C6");
  271. dr.Close ();
  272. cmd.Dispose ();
  273. cmd = (OdbcCommand) conn.CreateCommand ();
  274. cmd.CommandText = select_by_id;
  275. param = cmd.Parameters.Add ("id", OdbcType.Int);
  276. param.Value = 4;
  277. dr = cmd.ExecuteReader ();
  278. Assert.IsTrue (dr.Read (), "#D1");
  279. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  280. Assert.AreEqual (4, dr.GetValue (0), "#D3");
  281. Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#D4");
  282. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
  283. Assert.IsFalse (dr.Read (), "#D6");
  284. dr.Close ();
  285. cmd.Dispose ();
  286. cmd = (OdbcCommand) conn.CreateCommand ();
  287. cmd.CommandText = insert_data;
  288. param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
  289. param.Value = 8223372036854775805L;
  290. cmd.ExecuteNonQuery ();
  291. cmd.Dispose ();
  292. cmd = (OdbcCommand) conn.CreateCommand ();
  293. cmd.CommandText = select_data;
  294. param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
  295. param.Value = 8223372036854775805L;
  296. param = cmd.Parameters.Add ("id", OdbcType.Int);
  297. param.Value = 6000;
  298. dr = cmd.ExecuteReader ();
  299. Assert.IsTrue (dr.Read (), "#E1");
  300. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
  301. Assert.AreEqual (6000, dr.GetValue (0), "#E3");
  302. Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#E4");
  303. Assert.AreEqual (8223372036854775805L, dr.GetValue (1), "#E5");
  304. Assert.IsFalse (dr.Read (), "#E6");
  305. dr.Close ();
  306. cmd.Dispose ();
  307. DBHelper.ExecuteNonQuery (conn, delete_data);
  308. cmd = (OdbcCommand) conn.CreateCommand ();
  309. cmd.CommandText = insert_data;
  310. param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
  311. param.Value = -8223372036854775805L;
  312. cmd.ExecuteNonQuery ();
  313. cmd.Dispose ();
  314. cmd = (OdbcCommand) conn.CreateCommand ();
  315. cmd.CommandText = select_data;
  316. param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
  317. param.Value = -8223372036854775805L;
  318. param = cmd.Parameters.Add ("id", OdbcType.Int);
  319. param.Value = 6000;
  320. dr = cmd.ExecuteReader ();
  321. Assert.IsTrue (dr.Read (), "#F1");
  322. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
  323. Assert.AreEqual (6000, dr.GetValue (0), "#F3");
  324. Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#F4");
  325. Assert.AreEqual (-8223372036854775805L, dr.GetValue (1), "#F5");
  326. Assert.IsFalse (dr.Read (), "#F6");
  327. dr.Close ();
  328. cmd.Dispose ();
  329. DBHelper.ExecuteNonQuery (conn, delete_data);
  330. cmd = (OdbcCommand) conn.CreateCommand ();
  331. cmd.CommandText = insert_data;
  332. param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
  333. param.Value = 0L;
  334. cmd.ExecuteNonQuery ();
  335. cmd.Dispose ();
  336. cmd = (OdbcCommand) conn.CreateCommand ();
  337. cmd.CommandText = select_data;
  338. param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
  339. param.Value = 0;
  340. param = cmd.Parameters.Add ("id", OdbcType.Int);
  341. param.Value = 6000;
  342. dr = cmd.ExecuteReader ();
  343. Assert.IsTrue (dr.Read (), "#G1");
  344. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
  345. Assert.AreEqual (6000, dr.GetValue (0), "#G3");
  346. Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#G4");
  347. Assert.AreEqual (0L, dr.GetValue (1), "#G5");
  348. Assert.IsFalse (dr.Read (), "#G6");
  349. dr.Close ();
  350. cmd.Dispose ();
  351. DBHelper.ExecuteNonQuery (conn, delete_data);
  352. cmd = (OdbcCommand) conn.CreateCommand ();
  353. cmd.CommandText = insert_data;
  354. param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
  355. param.Value = DBNull.Value;
  356. cmd.ExecuteNonQuery ();
  357. cmd.Dispose ();
  358. cmd = (OdbcCommand) conn.CreateCommand ();
  359. cmd.CommandText = select_by_id;
  360. param = cmd.Parameters.Add ("id", OdbcType.Int);
  361. param.Value = 6000;
  362. dr = cmd.ExecuteReader ();
  363. Assert.IsTrue (dr.Read (), "#H1");
  364. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
  365. Assert.AreEqual (6000, dr.GetValue (0), "#H3");
  366. Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#H4");
  367. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#H5");
  368. Assert.IsFalse (dr.Read (), "#H6");
  369. dr.Close ();
  370. cmd.Dispose ();
  371. } finally {
  372. if (dr != null)
  373. dr.Close ();
  374. if (cmd != null)
  375. cmd.Dispose ();
  376. conn.Close ();
  377. conn.Open ();
  378. DBHelper.ExecuteNonQuery (conn, delete_data);
  379. conn.Close ();
  380. }
  381. }
  382. [Test]
  383. public void BinaryParameterTest ()
  384. {
  385. string insert_data = "insert into binary_family (id, type_binary) values (6000, ?)";
  386. string select_data = "select id, type_binary from binary_family where type_binary = ? and id = ?";
  387. string select_by_id = "select id, type_binary from binary_family where id = ?";
  388. string delete_data = "delete from binary_family where id = 6000";
  389. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  390. IDataReader dr = null;
  391. OdbcCommand cmd = null;
  392. OdbcParameter param;
  393. try {
  394. byte [] bytes = new byte [] { 0x35, 0x00, 0x00,
  395. 0x00, 0x00, 0x00, 0x00, 0x00 };
  396. cmd = conn.CreateCommand ();
  397. cmd.CommandText = select_data;
  398. param = cmd.Parameters.Add ("type_binary", OdbcType.Binary);
  399. param.Value = bytes;
  400. param = cmd.Parameters.Add ("id", OdbcType.Int);
  401. param.Value = 1;
  402. dr = cmd.ExecuteReader ();
  403. Assert.IsTrue (dr.Read (), "#A1");
  404. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
  405. Assert.AreEqual (1, dr.GetValue (0), "#A3");
  406. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#A4");
  407. Assert.AreEqual (bytes, dr.GetValue (1), "#A5");
  408. Assert.IsFalse (dr.Read (), "#A6");
  409. dr.Close ();
  410. cmd.Dispose ();
  411. bytes = new byte [] { 0x00, 0x33, 0x34, 0x00,
  412. 0x33, 0x30, 0x35, 0x31 };
  413. cmd = conn.CreateCommand ();
  414. cmd.CommandText = select_data;
  415. param = cmd.Parameters.Add ("type_binary", OdbcType.Binary);
  416. param.Value = bytes;
  417. param = cmd.Parameters.Add ("id", OdbcType.Int);
  418. param.Value = 2;
  419. dr = cmd.ExecuteReader ();
  420. Assert.IsTrue (dr.Read (), "#B1");
  421. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  422. Assert.AreEqual (2, dr.GetValue (0), "#B3");
  423. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#B4");
  424. Assert.AreEqual (bytes, dr.GetValue (1), "#B5");
  425. Assert.IsFalse (dr.Read (), "#B6");
  426. dr.Close ();
  427. cmd.Dispose ();
  428. bytes = new byte [8];
  429. cmd = conn.CreateCommand ();
  430. cmd.CommandText = select_data;
  431. param = cmd.Parameters.Add ("type_binary", OdbcType.Binary);
  432. param.Value = bytes;
  433. param = cmd.Parameters.Add ("id", OdbcType.Int);
  434. param.Value = 3;
  435. dr = cmd.ExecuteReader ();
  436. Assert.IsTrue (dr.Read (), "#C1");
  437. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
  438. Assert.AreEqual (3, dr.GetValue (0), "#C3");
  439. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#C4");
  440. Assert.AreEqual (bytes, dr.GetValue (1), "#C5");
  441. Assert.IsFalse (dr.Read (), "#C6");
  442. dr.Close ();
  443. cmd.Dispose ();
  444. cmd = conn.CreateCommand ();
  445. cmd.CommandText = select_by_id;
  446. param = cmd.Parameters.Add ("id", OdbcType.Int);
  447. param.Value = 4;
  448. dr = cmd.ExecuteReader ();
  449. Assert.IsTrue (dr.Read (), "#D1");
  450. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  451. Assert.AreEqual (4, dr.GetValue (0), "#D3");
  452. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#D4");
  453. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
  454. Assert.IsFalse (dr.Read (), "#D6");
  455. dr.Close ();
  456. cmd.Dispose ();
  457. bytes = new byte [0];
  458. cmd = conn.CreateCommand ();
  459. cmd.CommandText = insert_data;
  460. param = cmd.Parameters.Add ("type_binary", OdbcType.Binary);
  461. param.Value = bytes;
  462. cmd.ExecuteNonQuery ();
  463. cmd.Dispose ();
  464. cmd = conn.CreateCommand ();
  465. cmd.CommandText = select_by_id;
  466. param = cmd.Parameters.Add ("id", OdbcType.Int);
  467. param.Value = 6000;
  468. dr = cmd.ExecuteReader ();
  469. Assert.IsTrue (dr.Read (), "#E1");
  470. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
  471. Assert.AreEqual (6000, dr.GetValue (0), "#E3");
  472. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#E4");
  473. Assert.AreEqual (new byte [8], dr.GetValue (1), "#E5");
  474. Assert.IsFalse (dr.Read (), "#E6");
  475. dr.Close ();
  476. cmd.Dispose ();
  477. DBHelper.ExecuteNonQuery (conn, delete_data);
  478. bytes = new byte [] { 0x05 };
  479. cmd = conn.CreateCommand ();
  480. cmd.CommandText = insert_data;
  481. param = cmd.Parameters.Add ("type_binary", OdbcType.Binary);
  482. param.Value = bytes;
  483. cmd.ExecuteNonQuery ();
  484. cmd.Dispose ();
  485. cmd = conn.CreateCommand ();
  486. cmd.CommandText = select_by_id;
  487. param = cmd.Parameters.Add ("id", OdbcType.Int);
  488. param.Value = 6000;
  489. dr = cmd.ExecuteReader ();
  490. Assert.IsTrue (dr.Read (), "#F1");
  491. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
  492. Assert.AreEqual (6000, dr.GetValue (0), "#F3");
  493. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#F4");
  494. Assert.AreEqual (new byte [] { 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, dr.GetValue (1), "#F5");
  495. Assert.IsFalse (dr.Read (), "#F6");
  496. dr.Close ();
  497. cmd.Dispose ();
  498. DBHelper.ExecuteNonQuery (conn, delete_data);
  499. bytes = new byte [] { 0x34, 0x00, 0x32 };
  500. cmd = conn.CreateCommand ();
  501. cmd.CommandText = insert_data;
  502. param = cmd.Parameters.Add ("type_binary", OdbcType.Binary);
  503. param.Value = bytes;
  504. cmd.ExecuteNonQuery ();
  505. cmd.Dispose ();
  506. cmd = conn.CreateCommand ();
  507. cmd.CommandText = select_by_id;
  508. param = cmd.Parameters.Add ("id", OdbcType.Int);
  509. param.Value = 6000;
  510. dr = cmd.ExecuteReader ();
  511. Assert.IsTrue (dr.Read (), "#G1");
  512. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
  513. Assert.AreEqual (6000, dr.GetValue (0), "#G3");
  514. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#G4");
  515. Assert.AreEqual (new byte [] { 0x34, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00 }, dr.GetValue (1), "#G5");
  516. Assert.IsFalse (dr.Read (), "#G6");
  517. dr.Close ();
  518. cmd.Dispose ();
  519. DBHelper.ExecuteNonQuery (conn, delete_data);
  520. bytes = new byte [] { 0x34, 0x00, 0x32, 0x05, 0x07, 0x13 };
  521. cmd = conn.CreateCommand ();
  522. cmd.CommandText = insert_data;
  523. param = cmd.Parameters.Add ("type_binary", OdbcType.Binary, 4);
  524. param.Value = bytes;
  525. cmd.ExecuteNonQuery ();
  526. cmd.Dispose ();
  527. cmd = conn.CreateCommand ();
  528. cmd.CommandText = select_by_id;
  529. param = cmd.Parameters.Add ("id", OdbcType.Int);
  530. param.Value = 6000;
  531. dr = cmd.ExecuteReader ();
  532. Assert.IsTrue (dr.Read (), "#H1");
  533. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
  534. Assert.AreEqual (6000, dr.GetValue (0), "#H3");
  535. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#H4");
  536. Assert.AreEqual (new byte [] { 0x34, 0x00, 0x32, 0x05, 0x00, 0x00, 0x00, 0x00 }, dr.GetValue (1), "#H5");
  537. Assert.IsFalse (dr.Read (), "#H6");
  538. dr.Close ();
  539. cmd.Dispose ();
  540. DBHelper.ExecuteNonQuery (conn, delete_data);
  541. cmd = conn.CreateCommand ();
  542. cmd.CommandText = insert_data;
  543. param = cmd.Parameters.Add ("type_binary", OdbcType.Binary);
  544. param.Value = DBNull.Value;
  545. cmd.ExecuteNonQuery ();
  546. cmd.Dispose ();
  547. cmd = conn.CreateCommand ();
  548. cmd.CommandText = select_by_id;
  549. param = cmd.Parameters.Add ("id", OdbcType.Int);
  550. param.Value = 6000;
  551. dr = cmd.ExecuteReader ();
  552. Assert.IsTrue (dr.Read (), "#I1");
  553. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#I2");
  554. Assert.AreEqual (6000, dr.GetValue (0), "#I3");
  555. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#I4");
  556. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#I5");
  557. Assert.IsFalse (dr.Read (), "#I6");
  558. dr.Close ();
  559. cmd.Dispose ();
  560. } finally {
  561. if (dr != null)
  562. dr.Close ();
  563. if (cmd != null)
  564. cmd.Dispose ();
  565. conn.Close ();
  566. conn.Open ();
  567. DBHelper.ExecuteNonQuery (conn, delete_data);
  568. conn.Close ();
  569. }
  570. }
  571. [Test]
  572. public void SmallIntParamTest ()
  573. {
  574. string insert_data = "insert into numeric_family (id, type_smallint) values (6000, ?)";
  575. string select_data = "select id, type_smallint from numeric_family where type_smallint = ? and id = ?";
  576. string select_by_id = "select id, type_smallint from numeric_family where id = ?";
  577. string delete_data = "delete from numeric_family where id = 6000";
  578. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  579. IDataReader dr = null;
  580. OdbcCommand cmd = null;
  581. OdbcParameter param;
  582. try {
  583. cmd = (OdbcCommand) conn.CreateCommand ();
  584. cmd.CommandText = select_data;
  585. param = cmd.Parameters.Add ("type_smallint", OdbcType.SmallInt);
  586. param.Value = short.MaxValue;
  587. param = cmd.Parameters.Add ("id", OdbcType.Int);
  588. param.Value = 1;
  589. dr = cmd.ExecuteReader ();
  590. Assert.IsTrue (dr.Read (), "#A1");
  591. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
  592. Assert.AreEqual (1, dr.GetValue (0), "#A2");
  593. Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#A3");
  594. Assert.AreEqual (short.MaxValue, dr.GetValue (1), "#A4");
  595. Assert.IsFalse (dr.Read (), "#A5");
  596. dr.Close ();
  597. cmd.Dispose ();
  598. cmd = (OdbcCommand) conn.CreateCommand ();
  599. cmd.CommandText = select_data;
  600. param = cmd.Parameters.Add ("type_smallint", OdbcType.SmallInt);
  601. param.Value = short.MinValue;
  602. param = cmd.Parameters.Add ("id", OdbcType.Int);
  603. param.Value = 2;
  604. dr = cmd.ExecuteReader ();
  605. Assert.IsTrue (dr.Read (), "#B1");
  606. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  607. Assert.AreEqual (2, dr.GetValue (0), "#B2");
  608. Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#B3");
  609. Assert.AreEqual (short.MinValue, dr.GetValue (1), "#B4");
  610. Assert.IsFalse (dr.Read (), "#B5");
  611. dr.Close ();
  612. cmd.Dispose ();
  613. cmd = (OdbcCommand) conn.CreateCommand ();
  614. cmd.CommandText = select_data;
  615. param = cmd.Parameters.Add ("type_smallint", OdbcType.SmallInt);
  616. param.Value = (short) 0;
  617. param = cmd.Parameters.Add ("id", OdbcType.Int);
  618. param.Value = 3;
  619. dr = cmd.ExecuteReader ();
  620. Assert.IsTrue (dr.Read (), "#C1");
  621. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
  622. Assert.AreEqual (3, dr.GetValue (0), "#C2");
  623. Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#C3");
  624. Assert.AreEqual (0, dr.GetValue (1), "#C4");
  625. Assert.IsFalse (dr.Read (), "#C5");
  626. dr.Close ();
  627. cmd.Dispose ();
  628. cmd = (OdbcCommand) conn.CreateCommand ();
  629. cmd.CommandText = select_by_id;
  630. param = cmd.Parameters.Add ("id", OdbcType.Int);
  631. param.Value = 4;
  632. dr = cmd.ExecuteReader ();
  633. Assert.IsTrue (dr.Read (), "#D1");
  634. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  635. Assert.AreEqual (4, dr.GetValue (0), "#D3");
  636. Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#D4");
  637. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
  638. Assert.IsFalse (dr.Read (), "#D6");
  639. dr.Close ();
  640. cmd.Dispose ();
  641. cmd = (OdbcCommand) conn.CreateCommand ();
  642. cmd.CommandText = insert_data;
  643. param = cmd.Parameters.Add ("type_smallint", OdbcType.SmallInt);
  644. param.Value = short.MaxValue;
  645. cmd.ExecuteNonQuery ();
  646. cmd.Dispose ();
  647. cmd = (OdbcCommand) conn.CreateCommand ();
  648. cmd.CommandText = select_by_id;
  649. param = cmd.Parameters.Add ("id", OdbcType.Int);
  650. param.Value = 6000;
  651. dr = cmd.ExecuteReader ();
  652. Assert.IsTrue (dr.Read (), "#E1");
  653. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
  654. Assert.AreEqual (6000, dr.GetValue (0), "#E3");
  655. Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#E4");
  656. Assert.AreEqual (short.MaxValue, dr.GetValue (1), "#E5");
  657. Assert.IsFalse (dr.Read (), "#E6");
  658. dr.Close ();
  659. cmd.Dispose ();
  660. DBHelper.ExecuteNonQuery (conn, delete_data);
  661. cmd = (OdbcCommand) conn.CreateCommand ();
  662. cmd.CommandText = insert_data;
  663. param = cmd.Parameters.Add ("type_smallint", OdbcType.SmallInt);
  664. param.Value = short.MinValue;
  665. cmd.ExecuteNonQuery ();
  666. cmd.Dispose ();
  667. cmd = (OdbcCommand) conn.CreateCommand ();
  668. cmd.CommandText = select_by_id;
  669. param = cmd.Parameters.Add ("id", OdbcType.Int);
  670. param.Value = 6000;
  671. dr = cmd.ExecuteReader ();
  672. Assert.IsTrue (dr.Read (), "#F1");
  673. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
  674. Assert.AreEqual (6000, dr.GetValue (0), "#F3");
  675. Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#F4");
  676. Assert.AreEqual (short.MinValue, dr.GetValue (1), "#F5");
  677. Assert.IsFalse (dr.Read (), "#F6");
  678. dr.Close ();
  679. cmd.Dispose ();
  680. DBHelper.ExecuteNonQuery (conn, delete_data);
  681. cmd = (OdbcCommand) conn.CreateCommand ();
  682. cmd.CommandText = insert_data;
  683. param = cmd.Parameters.Add ("type_smallint", OdbcType.SmallInt);
  684. param.Value = 0;
  685. cmd.ExecuteNonQuery ();
  686. cmd.Dispose ();
  687. cmd = (OdbcCommand) conn.CreateCommand ();
  688. cmd.CommandText = select_by_id;
  689. param = cmd.Parameters.Add ("id", OdbcType.Int);
  690. param.Value = 6000;
  691. dr = cmd.ExecuteReader ();
  692. Assert.IsTrue (dr.Read (), "#G1");
  693. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
  694. Assert.AreEqual (6000, dr.GetValue (0), "#G3");
  695. Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#G4");
  696. Assert.AreEqual ((short) 0, dr.GetValue (1), "#G5");
  697. Assert.IsFalse (dr.Read (), "#G6");
  698. dr.Close ();
  699. cmd.Dispose ();
  700. DBHelper.ExecuteNonQuery (conn, delete_data);
  701. cmd = (OdbcCommand) conn.CreateCommand ();
  702. cmd.CommandText = insert_data;
  703. param = cmd.Parameters.Add ("type_smallint", OdbcType.SmallInt);
  704. param.Value = DBNull.Value;
  705. cmd.ExecuteNonQuery ();
  706. cmd.Dispose ();
  707. cmd = (OdbcCommand) conn.CreateCommand ();
  708. cmd.CommandText = select_by_id;
  709. param = cmd.Parameters.Add ("id", OdbcType.Int);
  710. param.Value = 6000;
  711. dr = cmd.ExecuteReader ();
  712. Assert.IsTrue (dr.Read (), "#H1");
  713. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
  714. Assert.AreEqual (6000, dr.GetValue (0), "#H3");
  715. Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#H4");
  716. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#H5");
  717. Assert.IsFalse (dr.Read (), "#H6");
  718. dr.Close ();
  719. cmd.Dispose ();
  720. } finally {
  721. if (dr != null)
  722. dr.Close ();
  723. if (cmd != null)
  724. cmd.Dispose ();
  725. conn.Close ();
  726. conn.Open ();
  727. DBHelper.ExecuteNonQuery (conn, delete_data);
  728. conn.Close ();
  729. }
  730. }
  731. [Test]
  732. public void TimestampParameterTest ()
  733. {
  734. // the value for the timestamp column is determined by
  735. // the RDBMS upon insert/update and cannot be specified
  736. // by the user
  737. string insert_data = "insert into binary_family (id) values (6000)";
  738. string select_by_id = "select id, type_timestamp from binary_family where id = ?";
  739. string delete_data = "delete from binary_family where id = 6000";
  740. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  741. IDataReader dr = null;
  742. OdbcCommand cmd = null;
  743. OdbcParameter param;
  744. try {
  745. if (!ConnectionManager.Instance.Odbc.EngineConfig.SupportsTimestamp)
  746. Assert.Ignore ("Timestamp test does not apply to the current driver (" + conn.Driver + ").");
  747. cmd = conn.CreateCommand ();
  748. cmd.CommandText = insert_data;
  749. cmd.ExecuteNonQuery ();
  750. cmd.Dispose ();
  751. byte [] timestamp;
  752. cmd = conn.CreateCommand ();
  753. cmd.CommandText = "SELECT @@DBTS";
  754. dr = cmd.ExecuteReader ();
  755. Assert.IsTrue (dr.Read (), "#A1");
  756. Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#A2");
  757. timestamp = (byte []) dr.GetValue (0);
  758. Assert.IsFalse (dr.Read (), "#A3");
  759. dr.Close ();
  760. cmd.Dispose ();
  761. cmd = conn.CreateCommand ();
  762. cmd.CommandText = select_by_id;
  763. param = cmd.Parameters.Add ("id", OdbcType.Int);
  764. param.Value = 6000;
  765. dr = cmd.ExecuteReader ();
  766. Assert.IsTrue (dr.Read (), "#B1");
  767. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  768. Assert.AreEqual (6000, dr.GetValue (0), "#B3");
  769. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#B4");
  770. Assert.AreEqual (timestamp, dr.GetValue (1), "#B5");
  771. Assert.IsFalse (dr.Read (), "#B6");
  772. dr.Close ();
  773. cmd.Dispose ();
  774. } finally {
  775. if (dr != null)
  776. dr.Close ();
  777. if (cmd != null)
  778. cmd.Dispose ();
  779. conn.Close ();
  780. conn.Open ();
  781. DBHelper.ExecuteNonQuery (conn, delete_data);
  782. conn.Close ();
  783. }
  784. }
  785. [Test]
  786. public void TinyIntParamTest ()
  787. {
  788. string insert_data = "insert into numeric_family (id, type_tinyint) values (6000, ?)";
  789. string select_data = "select id, type_tinyint from numeric_family where type_tinyint = ? and id = ?";
  790. string select_by_id = "select id, type_tinyint from numeric_family where id = ?";
  791. string delete_data = "delete from numeric_family where id = 6000";
  792. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  793. IDataReader dr = null;
  794. OdbcCommand cmd = null;
  795. OdbcParameter param;
  796. try {
  797. cmd = (OdbcCommand) conn.CreateCommand ();
  798. cmd.CommandText = select_data;
  799. param = cmd.Parameters.Add ("type_tinyint", OdbcType.TinyInt);
  800. param.Value = byte.MaxValue;
  801. param = cmd.Parameters.Add ("id", OdbcType.Int);
  802. param.Value = 1;
  803. dr = cmd.ExecuteReader ();
  804. Assert.IsTrue (dr.Read (), "#A1");
  805. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
  806. Assert.AreEqual (1, dr.GetValue (0), "#A2");
  807. Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#A3");
  808. Assert.AreEqual (byte.MaxValue, dr.GetValue (1), "#A4");
  809. Assert.IsFalse (dr.Read (), "#A5");
  810. dr.Close ();
  811. cmd.Dispose ();
  812. cmd = (OdbcCommand) conn.CreateCommand ();
  813. cmd.CommandText = select_data;
  814. param = cmd.Parameters.Add ("type_tinyint", OdbcType.TinyInt);
  815. param.Value = byte.MinValue;
  816. param = cmd.Parameters.Add ("id", OdbcType.Int);
  817. param.Value = 2;
  818. dr = cmd.ExecuteReader ();
  819. Assert.IsTrue (dr.Read (), "#B1");
  820. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  821. Assert.AreEqual (2, dr.GetValue (0), "#B2");
  822. Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#B3");
  823. Assert.AreEqual (byte.MinValue, dr.GetValue (1), "#B4");
  824. Assert.IsFalse (dr.Read (), "#B5");
  825. dr.Close ();
  826. cmd.Dispose ();
  827. cmd = (OdbcCommand) conn.CreateCommand ();
  828. cmd.CommandText = select_data;
  829. param = cmd.Parameters.Add ("type_tinyint", OdbcType.TinyInt);
  830. param.Value = 0x00;
  831. param = cmd.Parameters.Add ("id", OdbcType.Int);
  832. param.Value = 3;
  833. dr = cmd.ExecuteReader ();
  834. Assert.IsTrue (dr.Read (), "#C1");
  835. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
  836. Assert.AreEqual (3, dr.GetValue (0), "#C2");
  837. Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#C3");
  838. Assert.AreEqual (0x00, dr.GetValue (1), "#C4");
  839. Assert.IsFalse (dr.Read (), "#C5");
  840. dr.Close ();
  841. cmd.Dispose ();
  842. cmd = (OdbcCommand) conn.CreateCommand ();
  843. cmd.CommandText = select_by_id;
  844. param = cmd.Parameters.Add ("id", OdbcType.Int);
  845. param.Value = 4;
  846. dr = cmd.ExecuteReader ();
  847. Assert.IsTrue (dr.Read (), "#D1");
  848. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  849. Assert.AreEqual (4, dr.GetValue (0), "#D3");
  850. Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#D4");
  851. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
  852. Assert.IsFalse (dr.Read (), "#D6");
  853. dr.Close ();
  854. cmd.Dispose ();
  855. cmd = (OdbcCommand) conn.CreateCommand ();
  856. cmd.CommandText = insert_data;
  857. param = cmd.Parameters.Add ("type_tinyint", OdbcType.TinyInt);
  858. param.Value = byte.MaxValue;
  859. cmd.ExecuteNonQuery ();
  860. cmd.Dispose ();
  861. cmd = (OdbcCommand) conn.CreateCommand ();
  862. cmd.CommandText = select_by_id;
  863. param = cmd.Parameters.Add ("id", OdbcType.Int);
  864. param.Value = 6000;
  865. dr = cmd.ExecuteReader ();
  866. Assert.IsTrue (dr.Read (), "#E1");
  867. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
  868. Assert.AreEqual (6000, dr.GetValue (0), "#E3");
  869. Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#E4");
  870. Assert.AreEqual (byte.MaxValue, dr.GetValue (1), "#E5");
  871. Assert.IsFalse (dr.Read (), "#E6");
  872. dr.Close ();
  873. cmd.Dispose ();
  874. DBHelper.ExecuteNonQuery (conn, delete_data);
  875. cmd = (OdbcCommand) conn.CreateCommand ();
  876. cmd.CommandText = insert_data;
  877. param = cmd.Parameters.Add ("type_tinyint", OdbcType.TinyInt);
  878. param.Value = byte.MinValue;
  879. cmd.ExecuteNonQuery ();
  880. cmd.Dispose ();
  881. cmd = (OdbcCommand) conn.CreateCommand ();
  882. cmd.CommandText = select_by_id;
  883. param = cmd.Parameters.Add ("id", OdbcType.Int);
  884. param.Value = 6000;
  885. dr = cmd.ExecuteReader ();
  886. Assert.IsTrue (dr.Read (), "#F1");
  887. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
  888. Assert.AreEqual (6000, dr.GetValue (0), "#F3");
  889. Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#F4");
  890. Assert.AreEqual (byte.MinValue, dr.GetValue (1), "#F5");
  891. Assert.IsFalse (dr.Read (), "#F6");
  892. dr.Close ();
  893. cmd.Dispose ();
  894. DBHelper.ExecuteNonQuery (conn, delete_data);
  895. cmd = (OdbcCommand) conn.CreateCommand ();
  896. cmd.CommandText = insert_data;
  897. param = cmd.Parameters.Add ("type_tinyint", OdbcType.TinyInt);
  898. param.Value = 0x00;
  899. cmd.ExecuteNonQuery ();
  900. cmd.Dispose ();
  901. cmd = (OdbcCommand) conn.CreateCommand ();
  902. cmd.CommandText = select_by_id;
  903. param = cmd.Parameters.Add ("id", OdbcType.Int);
  904. param.Value = 6000;
  905. dr = cmd.ExecuteReader ();
  906. Assert.IsTrue (dr.Read (), "#G1");
  907. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
  908. Assert.AreEqual (6000, dr.GetValue (0), "#G3");
  909. Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#G4");
  910. Assert.AreEqual (0x00, dr.GetValue (1), "#G5");
  911. Assert.IsFalse (dr.Read (), "#G6");
  912. dr.Close ();
  913. cmd.Dispose ();
  914. DBHelper.ExecuteNonQuery (conn, delete_data);
  915. cmd = (OdbcCommand) conn.CreateCommand ();
  916. cmd.CommandText = insert_data;
  917. param = cmd.Parameters.Add ("type_tinyint", OdbcType.TinyInt);
  918. param.Value = DBNull.Value;
  919. cmd.ExecuteNonQuery ();
  920. cmd.Dispose ();
  921. cmd = (OdbcCommand) conn.CreateCommand ();
  922. cmd.CommandText = select_by_id;
  923. param = cmd.Parameters.Add ("id", OdbcType.Int);
  924. param.Value = 6000;
  925. dr = cmd.ExecuteReader ();
  926. Assert.IsTrue (dr.Read (), "#H1");
  927. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
  928. Assert.AreEqual (6000, dr.GetValue (0), "#H3");
  929. Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#H4");
  930. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#H5");
  931. Assert.IsFalse (dr.Read (), "#H6");
  932. dr.Close ();
  933. cmd.Dispose ();
  934. } finally {
  935. if (dr != null)
  936. dr.Close ();
  937. if (cmd != null)
  938. cmd.Dispose ();
  939. conn.Close ();
  940. conn.Open ();
  941. DBHelper.ExecuteNonQuery (conn, delete_data);
  942. conn.Close ();
  943. }
  944. }
  945. [Test]
  946. public void StringParamTest ()
  947. {
  948. string query = "select id, fname from employee where fname = ?";
  949. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  950. try {
  951. OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
  952. cmd.CommandText = query;
  953. OdbcParameter param = cmd.Parameters.Add ("fname", OdbcType.VarChar);
  954. param.Value = "suresh";
  955. OdbcDataReader dr = cmd.ExecuteReader ();
  956. Assert.IsTrue (dr.Read (), "#1 no data to test");
  957. Assert.AreEqual (1, (int) dr [0], "#2 value not matching");
  958. } finally {
  959. ConnectionManager.Instance.Odbc.CloseConnection ();
  960. }
  961. }
  962. [Test]
  963. public void BitParameterTest ()
  964. {
  965. string insert_data = "insert into numeric_family (id, type_bit) values (6000, ?)";
  966. string select_data = "select id, type_bit from numeric_family where type_bit = ? and id = ?";
  967. string select_by_id = "select id, type_bit from numeric_family where id = ?";
  968. string delete_data = "delete from numeric_family where id = 6000";
  969. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  970. IDataReader dr = null;
  971. OdbcCommand cmd = null;
  972. OdbcParameter param;
  973. try {
  974. cmd = (OdbcCommand) conn.CreateCommand ();
  975. cmd.CommandText = select_data;
  976. param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
  977. param.Value = true;
  978. param = cmd.Parameters.Add ("id", OdbcType.Int);
  979. param.Value = 1;
  980. dr = cmd.ExecuteReader ();
  981. Assert.IsTrue (dr.Read (), "#A1");
  982. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
  983. Assert.AreEqual (1, dr.GetValue (0), "#A2");
  984. Assert.AreEqual (typeof (bool), dr.GetFieldType (1), "#A3");
  985. Assert.AreEqual (true, dr.GetValue (1), "#A4");
  986. Assert.IsFalse (dr.Read (), "#A5");
  987. dr.Close ();
  988. cmd.Dispose ();
  989. cmd = (OdbcCommand) conn.CreateCommand ();
  990. cmd.CommandText = select_data;
  991. param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
  992. param.Value = false;
  993. param = cmd.Parameters.Add ("id", OdbcType.Int);
  994. param.Value = 2;
  995. dr = cmd.ExecuteReader ();
  996. Assert.IsTrue (dr.Read (), "#B1");
  997. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  998. Assert.AreEqual (2, dr.GetValue (0), "#B2");
  999. Assert.AreEqual (typeof (bool), dr.GetFieldType (1), "#B3");
  1000. Assert.AreEqual (false, dr.GetValue (1), "#B4");
  1001. Assert.IsFalse (dr.Read (), "#B5");
  1002. dr.Close ();
  1003. cmd.Dispose ();
  1004. cmd = (OdbcCommand) conn.CreateCommand ();
  1005. cmd.CommandText = select_by_id;
  1006. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1007. param.Value = 4;
  1008. dr = cmd.ExecuteReader ();
  1009. Assert.IsTrue (dr.Read (), "#C1");
  1010. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
  1011. Assert.AreEqual (4, dr.GetValue (0), "#C3");
  1012. Assert.AreEqual (typeof (bool), dr.GetFieldType (1), "#C4");
  1013. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#C5");
  1014. Assert.IsFalse (dr.Read (), "#C6");
  1015. dr.Close ();
  1016. cmd.Dispose ();
  1017. cmd = (OdbcCommand) conn.CreateCommand ();
  1018. cmd.CommandText = insert_data;
  1019. param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
  1020. param.Value = true;
  1021. cmd.ExecuteNonQuery ();
  1022. cmd.Dispose ();
  1023. cmd = (OdbcCommand) conn.CreateCommand ();
  1024. cmd.CommandText = select_data;
  1025. param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
  1026. param.Value = true;
  1027. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1028. param.Value = 6000;
  1029. dr = cmd.ExecuteReader ();
  1030. Assert.IsTrue (dr.Read (), "#D1");
  1031. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  1032. Assert.AreEqual (6000, dr.GetValue (0), "#D3");
  1033. Assert.AreEqual (typeof (bool), dr.GetFieldType (1), "#D4");
  1034. Assert.AreEqual (true, dr.GetValue (1), "#D5");
  1035. Assert.IsFalse (dr.Read (), "#D6");
  1036. dr.Close ();
  1037. cmd.Dispose ();
  1038. DBHelper.ExecuteNonQuery (conn, delete_data);
  1039. cmd = (OdbcCommand) conn.CreateCommand ();
  1040. cmd.CommandText = insert_data;
  1041. param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
  1042. param.Value = false;
  1043. cmd.ExecuteNonQuery ();
  1044. cmd.Dispose ();
  1045. cmd = (OdbcCommand) conn.CreateCommand ();
  1046. cmd.CommandText = select_data;
  1047. param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
  1048. param.Value = false;
  1049. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1050. param.Value = 6000;
  1051. dr = cmd.ExecuteReader ();
  1052. Assert.IsTrue (dr.Read (), "#E1");
  1053. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
  1054. Assert.AreEqual (6000, dr.GetValue (0), "#E3");
  1055. Assert.AreEqual (typeof (bool), dr.GetFieldType (1), "#E4");
  1056. Assert.AreEqual (false, dr.GetValue (1), "#E5");
  1057. Assert.IsFalse (dr.Read (), "#E6");
  1058. dr.Close ();
  1059. cmd.Dispose ();
  1060. DBHelper.ExecuteNonQuery (conn, delete_data);
  1061. cmd = (OdbcCommand) conn.CreateCommand ();
  1062. cmd.CommandText = insert_data;
  1063. param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
  1064. param.Value = DBNull.Value;
  1065. cmd.ExecuteNonQuery ();
  1066. cmd.Dispose ();
  1067. cmd = (OdbcCommand) conn.CreateCommand ();
  1068. cmd.CommandText = select_by_id;
  1069. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1070. param.Value = 6000;
  1071. dr = cmd.ExecuteReader ();
  1072. Assert.IsTrue (dr.Read (), "#F1");
  1073. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
  1074. Assert.AreEqual (6000, dr.GetValue (0), "#F3");
  1075. Assert.AreEqual (typeof (bool), dr.GetFieldType (1), "#F4");
  1076. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#F5");
  1077. Assert.IsFalse (dr.Read (), "#F6");
  1078. dr.Close ();
  1079. cmd.Dispose ();
  1080. } finally {
  1081. if (dr != null)
  1082. dr.Close ();
  1083. if (cmd != null)
  1084. cmd.Dispose ();
  1085. conn.Close ();
  1086. conn.Open ();
  1087. DBHelper.ExecuteNonQuery (conn, delete_data);
  1088. conn.Close ();
  1089. }
  1090. }
  1091. [Test]
  1092. public void CharParameterTest ()
  1093. {
  1094. string insert_data = "insert into string_family (id, type_char) values (6000, ?)";
  1095. string select_data = "select id, type_char from string_family where type_char = ? and id = ?";
  1096. string select_by_id = "select id, type_char from string_family where id = ?";
  1097. string delete_data = "delete from string_family where id = 6000";
  1098. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  1099. IDataReader dr = null;
  1100. OdbcCommand cmd = null;
  1101. OdbcParameter param;
  1102. try {
  1103. cmd = conn.CreateCommand ();
  1104. cmd.CommandText = select_data;
  1105. param = cmd.Parameters.Add ("type_char", OdbcType.Char);
  1106. param.Value = "char";
  1107. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1108. param.Value = 1;
  1109. dr = cmd.ExecuteReader ();
  1110. Assert.IsTrue (dr.Read (), "#A1");
  1111. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
  1112. Assert.AreEqual (1, dr.GetValue (0), "#A3");
  1113. Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#A4");
  1114. if (ConnectionManager.Instance.Odbc.EngineConfig.RemovesTrailingSpaces)
  1115. Assert.AreEqual ("char", dr.GetValue (1), "#A5");
  1116. else
  1117. Assert.AreEqual ("char ", dr.GetValue (1), "#A5");
  1118. Assert.IsFalse (dr.Read (), "#A6");
  1119. dr.Close ();
  1120. cmd.Dispose ();
  1121. cmd = conn.CreateCommand ();
  1122. cmd.CommandText = select_data;
  1123. param = cmd.Parameters.Add ("type_char", OdbcType.Char);
  1124. param.Value = "0123456789";
  1125. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1126. param.Value = 2;
  1127. dr = cmd.ExecuteReader ();
  1128. Assert.IsTrue (dr.Read (), "#B1");
  1129. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  1130. Assert.AreEqual (2, dr.GetValue (0), "#B3");
  1131. Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#B4");
  1132. Assert.AreEqual ("0123456789", dr.GetValue (1), "#B5");
  1133. Assert.IsFalse (dr.Read (), "#B6");
  1134. dr.Close ();
  1135. cmd.Dispose ();
  1136. cmd = conn.CreateCommand ();
  1137. cmd.CommandText = select_data;
  1138. param = cmd.Parameters.Add ("type_char", OdbcType.Char);
  1139. param.Value = string.Empty;
  1140. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1141. param.Value = 3;
  1142. dr = cmd.ExecuteReader ();
  1143. Assert.IsTrue (dr.Read (), "#C1");
  1144. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
  1145. Assert.AreEqual (3, dr.GetValue (0), "#C3");
  1146. Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#C4");
  1147. if (ConnectionManager.Instance.Odbc.EngineConfig.RemovesTrailingSpaces)
  1148. Assert.AreEqual (string.Empty, dr.GetValue (1), "#C5");
  1149. else
  1150. Assert.AreEqual (" ", dr.GetValue (1), "#C5");
  1151. Assert.IsFalse (dr.Read (), "#C6");
  1152. dr.Close ();
  1153. cmd.Dispose ();
  1154. cmd = conn.CreateCommand ();
  1155. cmd.CommandText = select_by_id;
  1156. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1157. param.Value = 4;
  1158. dr = cmd.ExecuteReader ();
  1159. Assert.IsTrue (dr.Read (), "#D1");
  1160. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  1161. Assert.AreEqual (4, dr.GetValue (0), "#D3");
  1162. Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#D4");
  1163. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
  1164. Assert.IsFalse (dr.Read (), "#D6");
  1165. dr.Close ();
  1166. cmd.Dispose ();
  1167. cmd = conn.CreateCommand ();
  1168. cmd.CommandText = insert_data;
  1169. param = cmd.Parameters.Add ("type_char", OdbcType.Char, 3);
  1170. param.Value = "ABCD";
  1171. cmd.ExecuteNonQuery ();
  1172. cmd.Dispose ();
  1173. cmd = conn.CreateCommand ();
  1174. cmd.CommandText = select_data;
  1175. param = cmd.Parameters.Add ("type_char", OdbcType.Char, 3);
  1176. param.Value = "ABCE ";
  1177. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1178. param.Value = 6000;
  1179. dr = cmd.ExecuteReader ();
  1180. Assert.IsTrue (dr.Read (), "#E1");
  1181. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
  1182. Assert.AreEqual (6000, dr.GetValue (0), "#E3");
  1183. Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#E4");
  1184. if (ConnectionManager.Instance.Odbc.EngineConfig.RemovesTrailingSpaces)
  1185. Assert.AreEqual ("ABC", dr.GetValue (1), "#E5");
  1186. else
  1187. Assert.AreEqual ("ABC ", dr.GetValue (1), "#E5");
  1188. Assert.IsFalse (dr.Read (), "#E6");
  1189. dr.Close ();
  1190. cmd.Dispose ();
  1191. DBHelper.ExecuteNonQuery (conn, delete_data);
  1192. cmd = conn.CreateCommand ();
  1193. cmd.CommandText = insert_data;
  1194. param = cmd.Parameters.Add ("type_char", OdbcType.Char, 20);
  1195. param.Value = "ABCDEFGHIJ";
  1196. cmd.ExecuteNonQuery ();
  1197. cmd.Dispose ();
  1198. cmd = conn.CreateCommand ();
  1199. cmd.CommandText = select_data;
  1200. param = cmd.Parameters.Add ("type_char", OdbcType.Char);
  1201. param.Value = "ABCDEFGHIJ";
  1202. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1203. param.Value = 6000;
  1204. dr = cmd.ExecuteReader ();
  1205. Assert.IsTrue (dr.Read (), "#F1");
  1206. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
  1207. Assert.AreEqual (6000, dr.GetValue (0), "#F3");
  1208. Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#F4");
  1209. Assert.AreEqual ("ABCDEFGHIJ", dr.GetValue (1), "#F5");
  1210. Assert.IsFalse (dr.Read (), "#F6");
  1211. dr.Close ();
  1212. cmd.Dispose ();
  1213. DBHelper.ExecuteNonQuery (conn, delete_data);
  1214. cmd = conn.CreateCommand ();
  1215. cmd.CommandText = insert_data;
  1216. param = cmd.Parameters.Add ("type_char", OdbcType.Char, 20);
  1217. param.Value = string.Empty;
  1218. cmd.ExecuteNonQuery ();
  1219. cmd.Dispose ();
  1220. cmd = conn.CreateCommand ();
  1221. cmd.CommandText = select_data;
  1222. param = cmd.Parameters.Add ("type_char", OdbcType.Char);
  1223. param.Value = string.Empty;
  1224. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1225. param.Value = 6000;
  1226. dr = cmd.ExecuteReader ();
  1227. Assert.IsTrue (dr.Read (), "#G1");
  1228. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
  1229. Assert.AreEqual (6000, dr.GetValue (0), "#G3");
  1230. Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#G4");
  1231. if (ConnectionManager.Instance.Odbc.EngineConfig.RemovesTrailingSpaces)
  1232. Assert.AreEqual (string.Empty, dr.GetValue (1), "#G5");
  1233. else
  1234. Assert.AreEqual (" ", dr.GetValue (1), "#G5");
  1235. Assert.IsFalse (dr.Read (), "#G6");
  1236. dr.Close ();
  1237. cmd.Dispose ();
  1238. DBHelper.ExecuteNonQuery (conn, delete_data);
  1239. cmd = conn.CreateCommand ();
  1240. cmd.CommandText = insert_data;
  1241. param = cmd.Parameters.Add ("type_char", OdbcType.Char);
  1242. param.Value = DBNull.Value;
  1243. cmd.ExecuteNonQuery ();
  1244. cmd.Dispose ();
  1245. cmd = conn.CreateCommand ();
  1246. cmd.CommandText = select_by_id;
  1247. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1248. param.Value = 4;
  1249. dr = cmd.ExecuteReader ();
  1250. Assert.IsTrue (dr.Read (), "#H1");
  1251. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
  1252. Assert.AreEqual (4, dr.GetValue (0), "#H3");
  1253. Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#H4");
  1254. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#H5");
  1255. Assert.IsFalse (dr.Read (), "#H6");
  1256. dr.Close ();
  1257. cmd.Dispose ();
  1258. } finally {
  1259. if (dr != null)
  1260. dr.Close ();
  1261. if (cmd != null)
  1262. cmd.Dispose ();
  1263. conn.Close ();
  1264. conn.Open ();
  1265. DBHelper.ExecuteNonQuery (conn, delete_data);
  1266. conn.Close ();
  1267. }
  1268. }
  1269. [Test]
  1270. public void DecimalParameterTest ()
  1271. {
  1272. string select_data1 = "select id, type_decimal1 from numeric_family where type_decimal1 = ? and id = ?";
  1273. string select_data2 = "select id, type_decimal2 from numeric_family where type_decimal2 = ? and id = ?";
  1274. string select_by_id = "select id, type_decimal1, type_decimal2 from numeric_family where id = ?";
  1275. string insert_data = "insert into numeric_family (id, type_decimal1, type_decimal2) values (6000, ?, ?)";
  1276. string delete_data = "delete from numeric_family where id = 6000";
  1277. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  1278. IDataReader dr = null;
  1279. OdbcCommand cmd = null;
  1280. OdbcParameter param;
  1281. try {
  1282. cmd = (OdbcCommand) conn.CreateCommand ();
  1283. cmd.CommandText = select_data1;
  1284. param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
  1285. param.Value = 1000.00m;
  1286. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1287. param.Value = 1;
  1288. dr = cmd.ExecuteReader ();
  1289. Assert.IsTrue (dr.Read (), "#A1");
  1290. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
  1291. Assert.AreEqual (1, dr.GetValue (0), "#A3");
  1292. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#A4");
  1293. Assert.AreEqual (1000m, dr.GetValue (1), "#A5");
  1294. Assert.IsFalse (dr.Read (), "#A6");
  1295. dr.Close ();
  1296. cmd.Dispose ();
  1297. cmd = (OdbcCommand) conn.CreateCommand ();
  1298. cmd.CommandText = select_data1;
  1299. param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
  1300. param.Value = -1000.00m;
  1301. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1302. param.Value = 2;
  1303. dr = cmd.ExecuteReader ();
  1304. Assert.IsTrue (dr.Read (), "#B1");
  1305. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  1306. Assert.AreEqual (2, dr.GetValue (0), "#B3");
  1307. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#B4");
  1308. Assert.AreEqual (-1000m, dr.GetValue (1), "#B5");
  1309. Assert.IsFalse (dr.Read (), "#B6");
  1310. dr.Close ();
  1311. cmd.Dispose ();
  1312. cmd = (OdbcCommand) conn.CreateCommand ();
  1313. cmd.CommandText = select_data2;
  1314. param = cmd.Parameters.Add ("type_decimal2", OdbcType.Decimal);
  1315. param.Value = 4456.432m;
  1316. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1317. param.Value = 1;
  1318. dr = cmd.ExecuteReader ();
  1319. Assert.IsTrue (dr.Read (), "#C1");
  1320. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
  1321. Assert.AreEqual (1, dr.GetValue (0), "#C3");
  1322. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#C4");
  1323. Assert.AreEqual (4456.432m, dr.GetValue (1), "#C5");
  1324. Assert.IsFalse (dr.Read (), "#C6");
  1325. dr.Close ();
  1326. cmd.Dispose ();
  1327. cmd = (OdbcCommand) conn.CreateCommand ();
  1328. cmd.CommandText = select_data2;
  1329. param = cmd.Parameters.Add ("type_decimal2", OdbcType.Decimal);
  1330. param.Value = -4456.432m;
  1331. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1332. param.Value = 2;
  1333. dr = cmd.ExecuteReader ();
  1334. Assert.IsTrue (dr.Read (), "#D1");
  1335. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  1336. Assert.AreEqual (2, dr.GetValue (0), "#D3");
  1337. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#D4");
  1338. Assert.AreEqual (-4456.432m, dr.GetValue (1), "#D5");
  1339. Assert.IsFalse (dr.Read (), "#D6");
  1340. dr.Close ();
  1341. cmd.Dispose ();
  1342. cmd = (OdbcCommand) conn.CreateCommand ();
  1343. cmd.CommandText = select_data1;
  1344. param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
  1345. param.Value = 0m;
  1346. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1347. param.Value = 3;
  1348. dr = cmd.ExecuteReader ();
  1349. Assert.IsTrue (dr.Read (), "#E1");
  1350. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
  1351. Assert.AreEqual (3, dr.GetValue (0), "#E3");
  1352. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#E4");
  1353. Assert.AreEqual (0m, dr.GetValue (1), "#E5");
  1354. Assert.IsFalse (dr.Read (), "#E6");
  1355. dr.Close ();
  1356. cmd.Dispose ();
  1357. cmd = (OdbcCommand) conn.CreateCommand ();
  1358. cmd.CommandText = select_data1;
  1359. param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
  1360. param.Value = DBNull.Value;
  1361. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1362. param.Value = 4;
  1363. dr = cmd.ExecuteReader ();
  1364. Assert.IsFalse (dr.Read (), "#F");
  1365. dr.Close ();
  1366. cmd.Dispose ();
  1367. cmd = (OdbcCommand) conn.CreateCommand ();
  1368. cmd.CommandText = select_by_id;
  1369. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1370. param.Value = 4;
  1371. dr = cmd.ExecuteReader ();
  1372. Assert.IsTrue (dr.Read (), "#G1");
  1373. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
  1374. Assert.AreEqual (4, dr.GetValue (0), "#G3");
  1375. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#G4");
  1376. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#G5");
  1377. Assert.AreEqual (typeof (decimal), dr.GetFieldType (2), "#G6");
  1378. Assert.AreEqual (DBNull.Value, dr.GetValue (2), "#G7");
  1379. Assert.IsFalse (dr.Read (), "#G8");
  1380. dr.Close ();
  1381. cmd.Dispose ();
  1382. cmd = (OdbcCommand) conn.CreateCommand ();
  1383. cmd.CommandText = insert_data;
  1384. param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
  1385. param.Value = -1000.5678m;
  1386. param = cmd.Parameters.Add ("type_decimal2", OdbcType.Decimal);
  1387. param.Value = -1000.5678m;
  1388. cmd.ExecuteNonQuery ();
  1389. cmd.Dispose ();
  1390. cmd = (OdbcCommand) conn.CreateCommand ();
  1391. cmd.CommandText = select_data1;
  1392. param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
  1393. param.Value = -1000.5678m;
  1394. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1395. param.Value = 6000;
  1396. dr = cmd.ExecuteReader ();
  1397. Assert.IsFalse (dr.Read (), "#H");
  1398. dr.Close ();
  1399. cmd.Dispose ();
  1400. cmd = (OdbcCommand) conn.CreateCommand ();
  1401. cmd.CommandText = select_data1;
  1402. param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
  1403. param.Value = -1001;
  1404. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1405. param.Value = 6000;
  1406. dr = cmd.ExecuteReader ();
  1407. Assert.IsTrue (dr.Read (), "#I1");
  1408. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#I2");
  1409. Assert.AreEqual (6000, dr.GetValue (0), "#I3");
  1410. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#I4");
  1411. Assert.AreEqual (-1001m, dr.GetValue (1), "#I5");
  1412. Assert.IsFalse (dr.Read (), "#I6");
  1413. dr.Close ();
  1414. cmd.Dispose ();
  1415. cmd = (OdbcCommand) conn.CreateCommand ();
  1416. cmd.CommandText = select_data2;
  1417. param = cmd.Parameters.Add ("type_decimal2", OdbcType.Decimal);
  1418. param.Value = -1000.5678m;
  1419. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1420. param.Value = 6000;
  1421. dr = cmd.ExecuteReader ();
  1422. Assert.IsFalse (dr.Read (), "#J");
  1423. dr.Close ();
  1424. cmd.Dispose ();
  1425. cmd = (OdbcCommand) conn.CreateCommand ();
  1426. cmd.CommandText = select_data2;
  1427. param = cmd.Parameters.Add ("type_decimal2", OdbcType.Decimal);
  1428. param.Value = -1000.568m;
  1429. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1430. param.Value = 6000;
  1431. dr = cmd.ExecuteReader ();
  1432. Assert.IsTrue (dr.Read (), "#K1");
  1433. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#K2");
  1434. Assert.AreEqual (6000, dr.GetValue (0), "#K3");
  1435. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#K4");
  1436. Assert.AreEqual (-1000.568m, dr.GetValue (1), "#K5");
  1437. Assert.IsFalse (dr.Read (), "#K6");
  1438. dr.Close ();
  1439. cmd.Dispose ();
  1440. DBHelper.ExecuteNonQuery (conn, delete_data);
  1441. cmd = (OdbcCommand) conn.CreateCommand ();
  1442. cmd.CommandText = insert_data;
  1443. param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
  1444. param.Value = 56789m;
  1445. param.Precision = 7;
  1446. param.Scale = 2;
  1447. param = cmd.Parameters.Add ("type_decimal2", OdbcType.Decimal);
  1448. param.Value = 98765.5678m;
  1449. param.Precision = 10;
  1450. param.Scale = 2;
  1451. cmd.ExecuteNonQuery ();
  1452. cmd.Dispose ();
  1453. cmd = (OdbcCommand) conn.CreateCommand ();
  1454. cmd.CommandText = select_by_id;
  1455. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1456. param.Value = 6000;
  1457. dr = cmd.ExecuteReader ();
  1458. Assert.IsTrue (dr.Read (), "#L1");
  1459. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#L2");
  1460. Assert.AreEqual (6000, dr.GetValue (0), "#L3");
  1461. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#L4");
  1462. Assert.AreEqual (56789m, dr.GetValue (1), "#L5");
  1463. Assert.AreEqual (typeof (decimal), dr.GetFieldType (2), "#L6");
  1464. if (ConnectionManager.Instance.Odbc.EngineConfig.Type == EngineType.MySQL)
  1465. Assert.AreEqual (9876556.780m, dr.GetValue (2), "#L7");
  1466. else
  1467. Assert.AreEqual (98765.570m, dr.GetValue (2), "#L7");
  1468. Assert.IsFalse (dr.Read (), "#L8");
  1469. dr.Close ();
  1470. cmd.Dispose ();
  1471. DBHelper.ExecuteNonQuery (conn, delete_data);
  1472. cmd = (OdbcCommand) conn.CreateCommand ();
  1473. cmd.CommandText = insert_data;
  1474. param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
  1475. param.Value = DBNull.Value;
  1476. param = cmd.Parameters.Add ("type_decimal2", OdbcType.Decimal);
  1477. param.Value = DBNull.Value;
  1478. cmd.ExecuteNonQuery ();
  1479. cmd.Dispose ();
  1480. cmd = (OdbcCommand) conn.CreateCommand ();
  1481. cmd.CommandText = select_by_id;
  1482. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1483. param.Value = 6000;
  1484. dr = cmd.ExecuteReader ();
  1485. Assert.IsTrue (dr.Read (), "#M1");
  1486. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#M2");
  1487. Assert.AreEqual (6000, dr.GetValue (0), "#M3");
  1488. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#M4");
  1489. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#M5");
  1490. Assert.AreEqual (typeof (decimal), dr.GetFieldType (2), "#M6");
  1491. Assert.AreEqual (DBNull.Value, dr.GetValue(1), "#M7");
  1492. Assert.AreEqual (DBNull.Value, dr.GetValue (2), "#M8");
  1493. Assert.IsFalse (dr.Read (), "#M9");
  1494. dr.Close ();
  1495. cmd.Dispose ();
  1496. } finally {
  1497. if (cmd != null)
  1498. cmd.Dispose ();
  1499. if (dr != null)
  1500. dr.Close ();
  1501. conn.Close ();
  1502. conn.Open ();
  1503. DBHelper.ExecuteNonQuery (conn, delete_data);
  1504. conn.Close ();
  1505. }
  1506. }
  1507. [Test]
  1508. public void DoubleParameterTest ()
  1509. {
  1510. string insert_data = "insert into numeric_family (id, type_double) values (6000, ?)";
  1511. string select_data = "select id, type_double from numeric_family where type_double = ? and id = ?";
  1512. string select_by_id = "select id, type_double from numeric_family where id = ?";
  1513. string delete_data = "delete from numeric_family where id = 6000";
  1514. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  1515. IDataReader dr = null;
  1516. OdbcCommand cmd = null;
  1517. OdbcParameter param;
  1518. try {
  1519. cmd = (OdbcCommand) conn.CreateCommand ();
  1520. cmd.CommandText = select_data;
  1521. param = cmd.Parameters.Add ("type_double", OdbcType.Double);
  1522. param.Value = 1.79E+308;
  1523. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1524. param.Value = 1;
  1525. dr = cmd.ExecuteReader ();
  1526. Assert.IsTrue (dr.Read (), "#A1");
  1527. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
  1528. Assert.AreEqual (1, dr.GetValue (0), "#A3");
  1529. Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#A4");
  1530. Assert.AreEqual (1.79E+308, dr.GetValue (1), "#A5");
  1531. Assert.IsFalse (dr.Read (), "#A6");
  1532. dr.Close ();
  1533. cmd.Dispose ();
  1534. cmd = (OdbcCommand) conn.CreateCommand ();
  1535. cmd.CommandText = select_data;
  1536. param = cmd.Parameters.Add ("type_double", OdbcType.Double);
  1537. param.Value = -1.79E+308;
  1538. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1539. param.Value = 2;
  1540. dr = cmd.ExecuteReader ();
  1541. Assert.IsTrue (dr.Read (), "#B1");
  1542. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  1543. Assert.AreEqual (2, dr.GetValue (0), "#B3");
  1544. Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#B4");
  1545. Assert.AreEqual (-1.79E+308, dr.GetValue (1), "#B5");
  1546. Assert.IsFalse (dr.Read (), "#B6");
  1547. dr.Close ();
  1548. cmd.Dispose ();
  1549. cmd = (OdbcCommand) conn.CreateCommand ();
  1550. cmd.CommandText = select_data;
  1551. param = cmd.Parameters.Add ("type_double", OdbcType.Double);
  1552. param.Value = 0d;
  1553. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1554. param.Value = 3;
  1555. dr = cmd.ExecuteReader ();
  1556. Assert.IsTrue (dr.Read (), "#C1");
  1557. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
  1558. Assert.AreEqual (3, dr.GetValue (0), "#C3");
  1559. Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#C4");
  1560. Assert.AreEqual (0d, dr.GetValue (1), "#C5");
  1561. Assert.IsFalse (dr.Read (), "#C6");
  1562. dr.Close ();
  1563. cmd.Dispose ();
  1564. cmd = (OdbcCommand) conn.CreateCommand ();
  1565. cmd.CommandText = select_by_id;
  1566. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1567. param.Value = 4;
  1568. dr = cmd.ExecuteReader ();
  1569. Assert.IsTrue (dr.Read (), "#D1");
  1570. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  1571. Assert.AreEqual (4, dr.GetValue (0), "#D3");
  1572. Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#D4");
  1573. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
  1574. Assert.IsFalse (dr.Read (), "#D6");
  1575. dr.Close ();
  1576. cmd.Dispose ();
  1577. cmd = (OdbcCommand) conn.CreateCommand ();
  1578. cmd.CommandText = insert_data;
  1579. param = cmd.Parameters.Add ("type_double", OdbcType.Double);
  1580. param.Value = 1.79E+308;
  1581. cmd.ExecuteNonQuery ();
  1582. cmd.Dispose ();
  1583. cmd = (OdbcCommand) conn.CreateCommand ();
  1584. cmd.CommandText = select_data;
  1585. param = cmd.Parameters.Add ("type_double", OdbcType.Double);
  1586. param.Value = 1.79E+308;
  1587. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1588. param.Value = 6000;
  1589. dr = cmd.ExecuteReader ();
  1590. Assert.IsTrue (dr.Read (), "#E1");
  1591. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
  1592. Assert.AreEqual (6000, dr.GetValue (0), "#E3");
  1593. Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#E4");
  1594. Assert.AreEqual (1.79E+308, dr.GetValue (1), "#E5");
  1595. Assert.IsFalse (dr.Read (), "#E6");
  1596. dr.Close ();
  1597. cmd.Dispose ();
  1598. DBHelper.ExecuteNonQuery (conn, delete_data);
  1599. cmd = (OdbcCommand) conn.CreateCommand ();
  1600. cmd.CommandText = insert_data;
  1601. param = cmd.Parameters.Add ("type_double", OdbcType.Double);
  1602. param.Value = -1.79E+308;
  1603. cmd.ExecuteNonQuery ();
  1604. cmd.Dispose ();
  1605. cmd = (OdbcCommand) conn.CreateCommand ();
  1606. cmd.CommandText = select_data;
  1607. param = cmd.Parameters.Add ("type_double", OdbcType.Double);
  1608. param.Value = -1.79E+308;
  1609. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1610. param.Value = 6000;
  1611. dr = cmd.ExecuteReader ();
  1612. Assert.IsTrue (dr.Read (), "#F1");
  1613. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
  1614. Assert.AreEqual (6000, dr.GetValue (0), "#F3");
  1615. Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#F4");
  1616. Assert.AreEqual (-1.79E+308, dr.GetValue (1), "#F5");
  1617. Assert.IsFalse (dr.Read (), "#F6");
  1618. dr.Close ();
  1619. cmd.Dispose ();
  1620. DBHelper.ExecuteNonQuery (conn, delete_data);
  1621. cmd = (OdbcCommand) conn.CreateCommand ();
  1622. cmd.CommandText = insert_data;
  1623. param = cmd.Parameters.Add ("type_double", OdbcType.Double);
  1624. param.Value = "45543,55";
  1625. cmd.ExecuteNonQuery ();
  1626. cmd.Dispose ();
  1627. cmd = (OdbcCommand) conn.CreateCommand ();
  1628. cmd.CommandText = select_data;
  1629. param = cmd.Parameters.Add ("type_double", OdbcType.Double);
  1630. param.Value = "45543,55";
  1631. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1632. param.Value = 6000;
  1633. dr = cmd.ExecuteReader ();
  1634. Assert.IsTrue (dr.Read (), "#G1");
  1635. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
  1636. Assert.AreEqual (6000, dr.GetValue (0), "#G3");
  1637. Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#G4");
  1638. Assert.AreEqual (45543.55d, dr.GetValue (1), "#G5");
  1639. Assert.IsFalse (dr.Read (), "#G6");
  1640. dr.Close ();
  1641. cmd.Dispose ();
  1642. DBHelper.ExecuteNonQuery (conn, delete_data);
  1643. cmd = (OdbcCommand) conn.CreateCommand ();
  1644. cmd.CommandText = insert_data;
  1645. param = cmd.Parameters.Add ("type_double", OdbcType.Double);
  1646. param.Value = DBNull.Value;
  1647. cmd.ExecuteNonQuery ();
  1648. cmd.Dispose ();
  1649. cmd = (OdbcCommand) conn.CreateCommand ();
  1650. cmd.CommandText = select_by_id;
  1651. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1652. param.Value = 6000;
  1653. dr = cmd.ExecuteReader ();
  1654. Assert.IsTrue (dr.Read (), "#H1");
  1655. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
  1656. Assert.AreEqual (6000, dr.GetValue (0), "#H3");
  1657. Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#H4");
  1658. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#H5");
  1659. Assert.IsFalse (dr.Read (), "#H6");
  1660. dr.Close ();
  1661. cmd.Dispose ();
  1662. } finally {
  1663. if (dr != null)
  1664. dr.Close ();
  1665. if (cmd != null)
  1666. cmd.Dispose ();
  1667. conn.Close ();
  1668. conn.Open ();
  1669. DBHelper.ExecuteNonQuery (conn, delete_data);
  1670. conn.Close ();
  1671. }
  1672. }
  1673. [Test]
  1674. public void ImageParameterTest ()
  1675. {
  1676. string insert_data = "insert into binary_family (id, type_blob) values (6000, ?)";
  1677. string select_data = "select type_blob from binary_family where id = ?";
  1678. string delete_data = "delete from binary_family where id = 6000";
  1679. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  1680. IDataReader dr = null;
  1681. OdbcCommand cmd = null;
  1682. OdbcParameter param;
  1683. try {
  1684. byte [] bytes = new byte [] { 0x32, 0x56, 0x00,
  1685. 0x44, 0x22 };
  1686. cmd = (OdbcCommand) conn.CreateCommand ();
  1687. cmd.CommandText = select_data;
  1688. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1689. param.Value = 1;
  1690. dr = cmd.ExecuteReader ();
  1691. Assert.IsTrue (dr.Read (), "#A1");
  1692. Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#A2");
  1693. Assert.AreEqual (bytes, dr.GetValue (0), "#A3");
  1694. Assert.IsFalse (dr.Read (), "#A4");
  1695. dr.Close ();
  1696. cmd.Dispose ();
  1697. bytes = new byte [] { 0x00, 0x66, 0x06, 0x66,
  1698. 0x97, 0x00, 0x66, 0x06, 0x66, 0x97, 0x06,
  1699. 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
  1700. 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
  1701. 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
  1702. 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
  1703. 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
  1704. 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
  1705. 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
  1706. 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
  1707. 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
  1708. 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
  1709. 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
  1710. 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
  1711. 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
  1712. 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
  1713. 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
  1714. 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
  1715. 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
  1716. 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
  1717. 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
  1718. 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
  1719. 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
  1720. 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
  1721. 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
  1722. 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
  1723. 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
  1724. 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
  1725. 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
  1726. 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
  1727. 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
  1728. 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
  1729. 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
  1730. 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
  1731. 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
  1732. 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
  1733. 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
  1734. 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
  1735. 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
  1736. 0x06, 0x66, 0x06, 0x66, 0x98};
  1737. cmd = (OdbcCommand) conn.CreateCommand ();
  1738. cmd.CommandText = select_data;
  1739. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1740. param.Value = 2;
  1741. dr = cmd.ExecuteReader ();
  1742. Assert.IsTrue (dr.Read (), "#B1");
  1743. Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#B2");
  1744. Assert.AreEqual (bytes, dr.GetValue (0), "#B3");
  1745. Assert.IsFalse (dr.Read (), "#B4");
  1746. dr.Close ();
  1747. cmd.Dispose ();
  1748. bytes = new byte [8];
  1749. cmd = (OdbcCommand) conn.CreateCommand ();
  1750. cmd.CommandText = select_data;
  1751. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1752. param.Value = 3;
  1753. dr = cmd.ExecuteReader ();
  1754. Assert.IsTrue (dr.Read (), "#C1");
  1755. Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#C2");
  1756. Assert.AreEqual (new byte [0], dr.GetValue (0), "#C3");
  1757. Assert.IsFalse (dr.Read (), "#C4");
  1758. dr.Close ();
  1759. cmd.Dispose ();
  1760. cmd = (OdbcCommand) conn.CreateCommand ();
  1761. cmd.CommandText = select_data;
  1762. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1763. param.Value = 4;
  1764. dr = cmd.ExecuteReader ();
  1765. Assert.IsTrue (dr.Read (), "#D1");
  1766. Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#D2");
  1767. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
  1768. Assert.IsFalse (dr.Read (), "#D4");
  1769. dr.Close ();
  1770. cmd.Dispose ();
  1771. bytes = new byte [0];
  1772. cmd = (OdbcCommand) conn.CreateCommand ();
  1773. cmd.CommandText = insert_data;
  1774. param = cmd.Parameters.Add ("type_blob", OdbcType.Image);
  1775. param.Value = bytes;
  1776. cmd.ExecuteNonQuery ();
  1777. cmd.Dispose ();
  1778. cmd = (OdbcCommand) conn.CreateCommand ();
  1779. cmd.CommandText = select_data;
  1780. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1781. param.Value = 6000;
  1782. dr = cmd.ExecuteReader ();
  1783. Assert.IsTrue (dr.Read (), "#E1");
  1784. Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#E2");
  1785. Assert.AreEqual (bytes, dr.GetValue (0), "#E3");
  1786. Assert.IsFalse (dr.Read (), "#E4");
  1787. dr.Close ();
  1788. cmd.Dispose ();
  1789. DBHelper.ExecuteNonQuery (conn, delete_data);
  1790. bytes = new byte [] { 0x05 };
  1791. cmd = (OdbcCommand) conn.CreateCommand ();
  1792. cmd.CommandText = insert_data;
  1793. param = cmd.Parameters.Add ("type_blob", OdbcType.Image);
  1794. param.Value = bytes;
  1795. cmd.ExecuteNonQuery ();
  1796. cmd.Dispose ();
  1797. cmd = (OdbcCommand) conn.CreateCommand ();
  1798. cmd.CommandText = select_data;
  1799. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1800. param.Value = 6000;
  1801. dr = cmd.ExecuteReader ();
  1802. Assert.IsTrue (dr.Read (), "#F1");
  1803. Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#F2");
  1804. Assert.AreEqual (bytes, dr.GetValue (0), "#F3");
  1805. Assert.IsFalse (dr.Read (), "#F4");
  1806. dr.Close ();
  1807. cmd.Dispose ();
  1808. DBHelper.ExecuteNonQuery (conn, delete_data);
  1809. bytes = new byte [] { 0x34, 0x00, 0x32 };
  1810. cmd = (OdbcCommand) conn.CreateCommand ();
  1811. cmd.CommandText = insert_data;
  1812. param = cmd.Parameters.Add ("type_blob", OdbcType.Image);
  1813. param.Value = bytes;
  1814. cmd.ExecuteNonQuery ();
  1815. cmd.Dispose ();
  1816. cmd = (OdbcCommand) conn.CreateCommand ();
  1817. cmd.CommandText = select_data;
  1818. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1819. param.Value = 6000;
  1820. dr = cmd.ExecuteReader ();
  1821. Assert.IsTrue (dr.Read (), "#G1");
  1822. Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#G2");
  1823. Assert.AreEqual (bytes, dr.GetValue (0), "#G3");
  1824. Assert.IsFalse (dr.Read (), "#G4");
  1825. dr.Close ();
  1826. cmd.Dispose ();
  1827. DBHelper.ExecuteNonQuery (conn, delete_data);
  1828. bytes = new byte [] { 0x34, 0x00, 0x32, 0x05, 0x07, 0x13 };
  1829. cmd = (OdbcCommand) conn.CreateCommand ();
  1830. cmd.CommandText = insert_data;
  1831. param = cmd.Parameters.Add ("type_blob", OdbcType.Image, 4);
  1832. param.Value = bytes;
  1833. cmd.ExecuteNonQuery ();
  1834. cmd.Dispose ();
  1835. cmd = (OdbcCommand) conn.CreateCommand ();
  1836. cmd.CommandText = select_data;
  1837. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1838. param.Value = 6000;
  1839. dr = cmd.ExecuteReader ();
  1840. Assert.IsTrue (dr.Read (), "#H1");
  1841. Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#H2");
  1842. Assert.AreEqual (new byte [] { 0x34, 0x00, 0x32, 0x05 }, dr.GetValue (0), "#H3");
  1843. Assert.IsFalse (dr.Read (), "#H4");
  1844. dr.Close ();
  1845. cmd.Dispose ();
  1846. DBHelper.ExecuteNonQuery (conn, delete_data);
  1847. cmd = (OdbcCommand) conn.CreateCommand ();
  1848. cmd.CommandText = insert_data;
  1849. param = cmd.Parameters.Add ("type_blob", OdbcType.Image);
  1850. param.Value = DBNull.Value;
  1851. cmd.ExecuteNonQuery ();
  1852. cmd.Dispose ();
  1853. cmd = (OdbcCommand) conn.CreateCommand ();
  1854. cmd.CommandText = select_data;
  1855. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1856. param.Value = 6000;
  1857. dr = cmd.ExecuteReader ();
  1858. Assert.IsTrue (dr.Read (), "#I1");
  1859. Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#I2");
  1860. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#I3");
  1861. Assert.IsFalse (dr.Read (), "#I4");
  1862. dr.Close ();
  1863. cmd.Dispose ();
  1864. } finally {
  1865. if (dr != null)
  1866. dr.Close ();
  1867. if (cmd != null)
  1868. cmd.Dispose ();
  1869. conn.Close ();
  1870. conn.Open ();
  1871. DBHelper.ExecuteNonQuery (conn, delete_data);
  1872. conn.Close ();
  1873. }
  1874. }
  1875. [Test]
  1876. public void NCharParameterTest ()
  1877. {
  1878. string insert_data = "insert into string_family (id, type_nchar) values (6000, ?)";
  1879. string select_data = "select type_nchar from string_family where type_nchar = ? and id = ?";
  1880. string select_by_id = "select type_nchar from string_family where id = ?";
  1881. string delete_data = "delete from string_family where id = 6000";
  1882. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  1883. IDataReader dr = null;
  1884. OdbcCommand cmd = null;
  1885. OdbcParameter param;
  1886. try {
  1887. cmd = conn.CreateCommand ();
  1888. cmd.CommandText = select_data;
  1889. param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
  1890. param.Value = "nch\u092d\u093er";
  1891. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1892. param.Value = 1;
  1893. dr = cmd.ExecuteReader ();
  1894. Assert.IsTrue (dr.Read (), "#A1");
  1895. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#A2");
  1896. if (ConnectionManager.Instance.Odbc.EngineConfig.RemovesTrailingSpaces)
  1897. Assert.AreEqual ("nch\u092d\u093er", dr.GetValue (0), "#A3");
  1898. else
  1899. Assert.AreEqual ("nch\u092d\u093er ", dr.GetValue (0), "#A3");
  1900. Assert.IsFalse (dr.Read (), "#A4");
  1901. dr.Close ();
  1902. cmd.Dispose ();
  1903. cmd = conn.CreateCommand ();
  1904. cmd.CommandText = select_data;
  1905. param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
  1906. param.Value = "0123456789";
  1907. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1908. param.Value = 2;
  1909. dr = cmd.ExecuteReader ();
  1910. Assert.IsTrue (dr.Read (), "#B1");
  1911. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#B2");
  1912. Assert.AreEqual ("0123456789", dr.GetValue (0), "#B3");
  1913. Assert.IsFalse (dr.Read (), "#B4");
  1914. dr.Close ();
  1915. cmd.Dispose ();
  1916. cmd = conn.CreateCommand ();
  1917. cmd.CommandText = select_data;
  1918. param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
  1919. param.Value = string.Empty;
  1920. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1921. param.Value = 3;
  1922. dr = cmd.ExecuteReader ();
  1923. Assert.IsTrue (dr.Read (), "#C1");
  1924. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#C2");
  1925. if (ConnectionManager.Instance.Odbc.EngineConfig.RemovesTrailingSpaces)
  1926. Assert.AreEqual (string.Empty, dr.GetValue (0), "#C3");
  1927. else
  1928. Assert.AreEqual (" ", dr.GetValue (0), "#C3");
  1929. Assert.IsFalse (dr.Read (), "#C4");
  1930. dr.Close ();
  1931. cmd.Dispose ();
  1932. cmd = conn.CreateCommand ();
  1933. cmd.CommandText = select_by_id;
  1934. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1935. param.Value = 4;
  1936. dr = cmd.ExecuteReader ();
  1937. Assert.IsTrue (dr.Read (), "#D1");
  1938. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#D2");
  1939. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
  1940. Assert.IsFalse (dr.Read (), "#D4");
  1941. dr.Close ();
  1942. cmd.Dispose ();
  1943. cmd = conn.CreateCommand ();
  1944. cmd.CommandText = insert_data;
  1945. param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
  1946. param.Value = "nchar";
  1947. cmd.ExecuteNonQuery ();
  1948. cmd.Dispose ();
  1949. cmd = conn.CreateCommand ();
  1950. cmd.CommandText = select_data;
  1951. param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
  1952. param.Value = "nchar";
  1953. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1954. param.Value = 6000;
  1955. dr = cmd.ExecuteReader ();
  1956. Assert.IsTrue (dr.Read (), "#E1");
  1957. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#E2");
  1958. if (ConnectionManager.Instance.Odbc.EngineConfig.RemovesTrailingSpaces)
  1959. Assert.AreEqual ("nchar", dr.GetValue (0), "#E3");
  1960. else
  1961. Assert.AreEqual ("nchar ", dr.GetValue (0), "#E3");
  1962. Assert.IsFalse (dr.Read (), "#E4");
  1963. dr.Close ();
  1964. cmd.Dispose ();
  1965. DBHelper.ExecuteNonQuery (conn, delete_data);
  1966. cmd = conn.CreateCommand ();
  1967. cmd.CommandText = insert_data;
  1968. param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar, 4);
  1969. param.Value = "nch\u0488r";
  1970. cmd.ExecuteNonQuery ();
  1971. cmd.Dispose ();
  1972. cmd = conn.CreateCommand ();
  1973. cmd.CommandText = select_data;
  1974. param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar, 4);
  1975. param.Value = "nch\u0488r";
  1976. param = cmd.Parameters.Add ("id", OdbcType.Int);
  1977. param.Value = 6000;
  1978. dr = cmd.ExecuteReader ();
  1979. Assert.IsTrue (dr.Read (), "#F1");
  1980. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#F2");
  1981. if (ConnectionManager.Instance.Odbc.EngineConfig.RemovesTrailingSpaces)
  1982. Assert.AreEqual ("nch\u0488", dr.GetValue (0), "#F3");
  1983. else
  1984. Assert.AreEqual ("nch\u0488 ", dr.GetValue (0), "#F3");
  1985. Assert.IsFalse (dr.Read (), "#F4");
  1986. dr.Close ();
  1987. cmd.Dispose ();
  1988. DBHelper.ExecuteNonQuery (conn, delete_data);
  1989. cmd = conn.CreateCommand ();
  1990. cmd.CommandText = insert_data;
  1991. param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar, 8);
  1992. param.Value = "ch\u0488r";
  1993. cmd.ExecuteNonQuery ();
  1994. cmd.Dispose ();
  1995. cmd = conn.CreateCommand ();
  1996. cmd.CommandText = select_data;
  1997. param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
  1998. param.Value = "ch\u0488r";
  1999. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2000. param.Value = 6000;
  2001. dr = cmd.ExecuteReader ();
  2002. Assert.IsTrue (dr.Read (), "#G1");
  2003. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#G2");
  2004. if (ConnectionManager.Instance.Odbc.EngineConfig.RemovesTrailingSpaces)
  2005. Assert.AreEqual ("ch\u0488r", dr.GetValue (0), "#G3");
  2006. else
  2007. Assert.AreEqual ("ch\u0488r ", dr.GetValue (0), "#G3");
  2008. Assert.IsFalse (dr.Read (), "#G4");
  2009. dr.Close ();
  2010. cmd.Dispose ();
  2011. DBHelper.ExecuteNonQuery (conn, delete_data);
  2012. cmd = conn.CreateCommand ();
  2013. cmd.CommandText = insert_data;
  2014. param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar, 15);
  2015. param.Value = "0123456789";
  2016. cmd.ExecuteNonQuery ();
  2017. cmd.Dispose ();
  2018. cmd = conn.CreateCommand ();
  2019. cmd.CommandText = select_data;
  2020. param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
  2021. param.Value = "0123456789";
  2022. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2023. param.Value = 6000;
  2024. dr = cmd.ExecuteReader ();
  2025. Assert.IsTrue (dr.Read (), "#H1");
  2026. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#H2");
  2027. Assert.AreEqual ("0123456789", dr.GetValue (0), "#H3");
  2028. Assert.IsFalse (dr.Read (), "#H4");
  2029. dr.Close ();
  2030. cmd.Dispose ();
  2031. DBHelper.ExecuteNonQuery (conn, delete_data);
  2032. cmd = conn.CreateCommand ();
  2033. cmd.CommandText = insert_data;
  2034. param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar, 15);
  2035. param.Value = string.Empty;
  2036. cmd.ExecuteNonQuery ();
  2037. cmd.Dispose ();
  2038. cmd = conn.CreateCommand ();
  2039. cmd.CommandText = select_data;
  2040. param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
  2041. param.Value = string.Empty;
  2042. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2043. param.Value = 6000;
  2044. dr = cmd.ExecuteReader ();
  2045. Assert.IsTrue (dr.Read (), "#I1");
  2046. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#I2");
  2047. if (ConnectionManager.Instance.Odbc.EngineConfig.RemovesTrailingSpaces)
  2048. Assert.AreEqual (string.Empty, dr.GetValue (0), "#I3");
  2049. else
  2050. Assert.AreEqual (" ", dr.GetValue (0), "#I3");
  2051. Assert.IsFalse (dr.Read (), "#I4");
  2052. dr.Close ();
  2053. cmd.Dispose ();
  2054. DBHelper.ExecuteNonQuery (conn, delete_data);
  2055. cmd = conn.CreateCommand ();
  2056. cmd.CommandText = insert_data;
  2057. param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
  2058. param.Value = DBNull.Value;
  2059. cmd.ExecuteNonQuery ();
  2060. cmd.Dispose ();
  2061. cmd = conn.CreateCommand ();
  2062. cmd.CommandText = select_by_id;
  2063. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2064. param.Value = 6000;
  2065. dr = cmd.ExecuteReader ();
  2066. Assert.IsTrue (dr.Read (), "#J1");
  2067. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#J2");
  2068. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#J3");
  2069. Assert.IsFalse (dr.Read (), "#J4");
  2070. dr.Close ();
  2071. cmd.Dispose ();
  2072. } finally {
  2073. if (dr != null)
  2074. dr.Close ();
  2075. if (cmd != null)
  2076. cmd.Dispose ();
  2077. conn.Close ();
  2078. conn.Open ();
  2079. DBHelper.ExecuteNonQuery (conn, delete_data);
  2080. conn.Close ();;
  2081. }
  2082. }
  2083. [Test]
  2084. public void NTextParameterTest ()
  2085. {
  2086. string insert_data = "insert into string_family (id, type_ntext) values (6000, ?)";
  2087. string select_by_id = "select type_ntext from string_family where id = ?";
  2088. string delete_data = "delete from string_family where id = 6000";
  2089. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  2090. IDataReader dr = null;
  2091. OdbcCommand cmd = null;
  2092. OdbcParameter param;
  2093. try {
  2094. cmd = conn.CreateCommand ();
  2095. cmd.CommandText = select_by_id;
  2096. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2097. param.Value = 1;
  2098. dr = cmd.ExecuteReader ();
  2099. Assert.IsTrue (dr.Read (), "#A1");
  2100. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#A2");
  2101. Assert.AreEqual ("nt\u092d\u093ext", dr.GetValue (0), "#A3");
  2102. Assert.IsFalse (dr.Read (), "#A4");
  2103. dr.Close ();
  2104. cmd.Dispose ();
  2105. cmd = conn.CreateCommand ();
  2106. cmd.CommandText = select_by_id;
  2107. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2108. param.Value = 2;
  2109. dr = cmd.ExecuteReader ();
  2110. Assert.IsTrue (dr.Read (), "#B1");
  2111. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#B2");
  2112. Assert.AreEqual ("nt\u092d\u093ext ", dr.GetValue (0), "#B3");
  2113. Assert.IsFalse (dr.Read (), "#B4");
  2114. dr.Close ();
  2115. cmd.Dispose ();
  2116. cmd = conn.CreateCommand ();
  2117. cmd.CommandText = select_by_id;
  2118. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2119. param.Value = 3;
  2120. dr = cmd.ExecuteReader ();
  2121. Assert.IsTrue (dr.Read (), "#C1");
  2122. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#C2");
  2123. Assert.AreEqual (string.Empty, dr.GetValue (0), "#C3");
  2124. Assert.IsFalse (dr.Read (), "#C4");
  2125. dr.Close ();
  2126. cmd.Dispose ();
  2127. cmd = conn.CreateCommand ();
  2128. cmd.CommandText = select_by_id;
  2129. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2130. param.Value = 4;
  2131. dr = cmd.ExecuteReader ();
  2132. Assert.IsTrue (dr.Read (), "#D1");
  2133. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#D2");
  2134. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
  2135. Assert.IsFalse (dr.Read (), "#D4");
  2136. dr.Close ();
  2137. cmd.Dispose ();
  2138. cmd = conn.CreateCommand ();
  2139. cmd.CommandText = insert_data;
  2140. param = cmd.Parameters.Add ("type_ntext", OdbcType.NText, 4);
  2141. param.Value = "nt\u0488xt";
  2142. cmd.ExecuteNonQuery ();
  2143. cmd.Dispose ();
  2144. cmd = (OdbcCommand) conn.CreateCommand ();
  2145. cmd.CommandText = select_by_id;
  2146. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2147. param.Value = 6000;
  2148. dr = cmd.ExecuteReader ();
  2149. Assert.IsTrue (dr.Read (), "#E1");
  2150. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#E2");
  2151. Assert.AreEqual ("nt\u0488x", dr.GetValue (0), "#E3");
  2152. Assert.IsFalse (dr.Read (), "#E4");
  2153. dr.Close ();
  2154. cmd.Dispose ();
  2155. DBHelper.ExecuteNonQuery (conn, delete_data);
  2156. cmd = conn.CreateCommand ();
  2157. cmd.CommandText = insert_data;
  2158. param = cmd.Parameters.Add ("type_ntext", OdbcType.NText, 15);
  2159. param.Value = "nt\u0488xt ";
  2160. cmd.ExecuteNonQuery ();
  2161. cmd.Dispose ();
  2162. cmd = (OdbcCommand) conn.CreateCommand ();
  2163. cmd.CommandText = select_by_id;
  2164. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2165. param.Value = 6000;
  2166. dr = cmd.ExecuteReader ();
  2167. Assert.IsTrue (dr.Read (), "#F1");
  2168. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#F2");
  2169. Assert.AreEqual ("nt\u0488xt ", dr.GetValue (0), "#F3");
  2170. Assert.IsFalse (dr.Read (), "#F4");
  2171. dr.Close ();
  2172. cmd.Dispose ();
  2173. DBHelper.ExecuteNonQuery (conn, delete_data);
  2174. cmd = (OdbcCommand) conn.CreateCommand ();
  2175. cmd.CommandText = insert_data;
  2176. param = cmd.Parameters.Add ("type_ntext", OdbcType.NText, 8);
  2177. param.Value = string.Empty;
  2178. cmd.ExecuteNonQuery ();
  2179. cmd.Dispose ();
  2180. cmd = (OdbcCommand) conn.CreateCommand ();
  2181. cmd.CommandText = select_by_id;
  2182. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2183. param.Value = 6000;
  2184. dr = cmd.ExecuteReader ();
  2185. Assert.IsTrue (dr.Read (), "#G1");
  2186. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#G2");
  2187. Assert.AreEqual (string.Empty, dr.GetValue (0), "#G3");
  2188. Assert.IsFalse (dr.Read (), "#G4");
  2189. dr.Close ();
  2190. cmd.Dispose ();
  2191. DBHelper.ExecuteNonQuery (conn, delete_data);
  2192. cmd = (OdbcCommand) conn.CreateCommand ();
  2193. cmd.CommandText = insert_data;
  2194. param = cmd.Parameters.Add ("type_ntext", OdbcType.NText, 8);
  2195. param.Value = DBNull.Value;
  2196. cmd.ExecuteNonQuery ();
  2197. cmd.Dispose ();
  2198. cmd = (OdbcCommand) conn.CreateCommand ();
  2199. cmd.CommandText = select_by_id;
  2200. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2201. param.Value = 6000;
  2202. dr = cmd.ExecuteReader ();
  2203. Assert.IsTrue (dr.Read (), "#H1");
  2204. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#H2");
  2205. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#H3");
  2206. Assert.IsFalse (dr.Read (), "#H4");
  2207. dr.Close ();
  2208. cmd.Dispose ();
  2209. } finally {
  2210. if (dr != null)
  2211. dr.Close ();
  2212. if (cmd != null)
  2213. cmd.Dispose ();
  2214. conn.Close ();
  2215. conn.Open ();
  2216. DBHelper.ExecuteNonQuery (conn, delete_data);
  2217. conn.Close ();
  2218. }
  2219. }
  2220. [Test]
  2221. public void TextParameterTest ()
  2222. {
  2223. string insert_data = "insert into string_family (id, type_text) values (6000, ?)";
  2224. string select_by_id = "select type_text from string_family where id = ?";
  2225. string delete_data = "delete from string_family where id = 6000";
  2226. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  2227. IDataReader dr = null;
  2228. OdbcCommand cmd = null;
  2229. OdbcParameter param;
  2230. try {
  2231. cmd = conn.CreateCommand ();
  2232. cmd.CommandText = select_by_id;
  2233. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2234. param.Value = 1;
  2235. dr = cmd.ExecuteReader ();
  2236. Assert.IsTrue (dr.Read (), "#A1");
  2237. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#A2");
  2238. Assert.AreEqual ("text", dr.GetValue (0), "#A3");
  2239. Assert.IsFalse (dr.Read (), "#A4");
  2240. dr.Close ();
  2241. cmd.Dispose ();
  2242. StringBuilder sb = new StringBuilder ();
  2243. for (int i = 0; i < 30; i++)
  2244. sb.Append ("longtext ");
  2245. cmd = conn.CreateCommand ();
  2246. cmd.CommandText = select_by_id;
  2247. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2248. param.Value = 2;
  2249. dr = cmd.ExecuteReader ();
  2250. Assert.IsTrue (dr.Read (), "#B1");
  2251. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#B2");
  2252. Assert.AreEqual (sb.ToString (), dr.GetValue (0), "#B3");
  2253. Assert.IsFalse (dr.Read (), "#B4");
  2254. dr.Close ();
  2255. cmd.Dispose ();
  2256. cmd = conn.CreateCommand ();
  2257. cmd.CommandText = select_by_id;
  2258. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2259. param.Value = 3;
  2260. dr = cmd.ExecuteReader ();
  2261. Assert.IsTrue (dr.Read (), "#C1");
  2262. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#C2");
  2263. Assert.AreEqual (string.Empty, dr.GetValue (0), "#C3");
  2264. Assert.IsFalse (dr.Read (), "#C4");
  2265. dr.Close ();
  2266. cmd.Dispose ();
  2267. cmd = conn.CreateCommand ();
  2268. cmd.CommandText = select_by_id;
  2269. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2270. param.Value = 4;
  2271. dr = cmd.ExecuteReader ();
  2272. Assert.IsTrue (dr.Read (), "#D1");
  2273. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#D2");
  2274. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
  2275. Assert.IsFalse (dr.Read (), "#D4");
  2276. dr.Close ();
  2277. cmd.Dispose ();
  2278. cmd = conn.CreateCommand ();
  2279. cmd.CommandText = insert_data;
  2280. param = cmd.Parameters.Add ("type_text", OdbcType.Text);
  2281. param.Value = sb.ToString ();
  2282. cmd.ExecuteNonQuery ();
  2283. cmd.Dispose ();
  2284. cmd = (OdbcCommand) conn.CreateCommand ();
  2285. cmd.CommandText = select_by_id;
  2286. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2287. param.Value = 6000;
  2288. dr = cmd.ExecuteReader ();
  2289. Assert.IsTrue (dr.Read (), "#E1");
  2290. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#E2");
  2291. Assert.AreEqual (sb.ToString (), dr.GetValue (0), "#E3");
  2292. Assert.IsFalse (dr.Read (), "#E4");
  2293. dr.Close ();
  2294. cmd.Dispose ();
  2295. DBHelper.ExecuteNonQuery (conn, delete_data);
  2296. cmd = conn.CreateCommand ();
  2297. cmd.CommandText = insert_data;
  2298. param = cmd.Parameters.Add ("type_text", OdbcType.Text, 2);
  2299. param.Value = "text";
  2300. cmd.ExecuteNonQuery ();
  2301. cmd.Dispose ();
  2302. cmd = (OdbcCommand) conn.CreateCommand ();
  2303. cmd.CommandText = select_by_id;
  2304. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2305. param.Value = 6000;
  2306. dr = cmd.ExecuteReader ();
  2307. Assert.IsTrue (dr.Read (), "#F1");
  2308. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#F2");
  2309. Assert.AreEqual ("te", dr.GetValue (0), "#F3");
  2310. Assert.IsFalse (dr.Read (), "#F4");
  2311. dr.Close ();
  2312. cmd.Dispose ();
  2313. DBHelper.ExecuteNonQuery (conn, delete_data);
  2314. cmd = (OdbcCommand) conn.CreateCommand ();
  2315. cmd.CommandText = insert_data;
  2316. param = cmd.Parameters.Add ("type_text", OdbcType.Text, 8);
  2317. param.Value = string.Empty;
  2318. cmd.ExecuteNonQuery ();
  2319. cmd.Dispose ();
  2320. cmd = (OdbcCommand) conn.CreateCommand ();
  2321. cmd.CommandText = select_by_id;
  2322. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2323. param.Value = 6000;
  2324. dr = cmd.ExecuteReader ();
  2325. Assert.IsTrue (dr.Read (), "#G1");
  2326. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#G2");
  2327. Assert.AreEqual (string.Empty, dr.GetValue (0), "#G3");
  2328. Assert.IsFalse (dr.Read (), "#G4");
  2329. dr.Close ();
  2330. cmd.Dispose ();
  2331. DBHelper.ExecuteNonQuery (conn, delete_data);
  2332. cmd = (OdbcCommand) conn.CreateCommand ();
  2333. cmd.CommandText = insert_data;
  2334. param = cmd.Parameters.Add ("type_text", OdbcType.Text, 8);
  2335. param.Value = DBNull.Value;
  2336. cmd.ExecuteNonQuery ();
  2337. cmd.Dispose ();
  2338. cmd = (OdbcCommand) conn.CreateCommand ();
  2339. cmd.CommandText = select_by_id;
  2340. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2341. param.Value = 6000;
  2342. dr = cmd.ExecuteReader ();
  2343. Assert.IsTrue (dr.Read (), "#H1");
  2344. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#H2");
  2345. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#H3");
  2346. Assert.IsFalse (dr.Read (), "#H4");
  2347. dr.Close ();
  2348. cmd.Dispose ();
  2349. } finally {
  2350. if (dr != null)
  2351. dr.Close ();
  2352. if (cmd != null)
  2353. cmd.Dispose ();
  2354. conn.Close ();
  2355. conn.Open ();
  2356. DBHelper.ExecuteNonQuery (conn, delete_data);
  2357. conn.Close ();
  2358. }
  2359. }
  2360. [Test]
  2361. public void NumericParameterTest ()
  2362. {
  2363. string select_data1 = "select id, type_numeric1 from numeric_family where type_numeric1 = ? and id = ?";
  2364. string select_data2 = "select id, type_numeric2 from numeric_family where type_numeric2 = ? and id = ?";
  2365. string select_by_id = "select id, type_numeric1, type_numeric2 from numeric_family where id = ?";
  2366. string insert_data = "insert into numeric_family (id, type_numeric1, type_numeric2) values (6000, ?, ?)";
  2367. string delete_data = "delete from numeric_family where id = 6000";
  2368. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  2369. IDataReader dr = null;
  2370. OdbcCommand cmd = null;
  2371. OdbcParameter param;
  2372. try {
  2373. cmd = (OdbcCommand) conn.CreateCommand ();
  2374. cmd.CommandText = select_data1;
  2375. param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
  2376. param.Value = 1000.00m;
  2377. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2378. param.Value = 1;
  2379. dr = cmd.ExecuteReader ();
  2380. Assert.IsTrue (dr.Read (), "#A1");
  2381. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
  2382. Assert.AreEqual (1, dr.GetValue (0), "#A3");
  2383. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#A4");
  2384. Assert.AreEqual (1000m, dr.GetValue (1), "#A5");
  2385. Assert.IsFalse (dr.Read (), "#A6");
  2386. dr.Close ();
  2387. cmd.Dispose ();
  2388. cmd = (OdbcCommand) conn.CreateCommand ();
  2389. cmd.CommandText = select_data1;
  2390. param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
  2391. param.Value = -1000.00m;
  2392. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2393. param.Value = 2;
  2394. dr = cmd.ExecuteReader ();
  2395. Assert.IsTrue (dr.Read (), "#B1");
  2396. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  2397. Assert.AreEqual (2, dr.GetValue (0), "#B3");
  2398. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#B4");
  2399. Assert.AreEqual (-1000m, dr.GetValue (1), "#B5");
  2400. Assert.IsFalse (dr.Read (), "#B6");
  2401. dr.Close ();
  2402. cmd.Dispose ();
  2403. cmd = (OdbcCommand) conn.CreateCommand ();
  2404. cmd.CommandText = select_data2;
  2405. param = cmd.Parameters.Add ("type_numeric2", OdbcType.Numeric);
  2406. param.Value = 4456.432m;
  2407. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2408. param.Value = 1;
  2409. dr = cmd.ExecuteReader ();
  2410. Assert.IsTrue (dr.Read (), "#C1");
  2411. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
  2412. Assert.AreEqual (1, dr.GetValue (0), "#C3");
  2413. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#C4");
  2414. Assert.AreEqual (4456.432m, dr.GetValue (1), "#C5");
  2415. Assert.IsFalse (dr.Read (), "#C6");
  2416. dr.Close ();
  2417. cmd.Dispose ();
  2418. cmd = (OdbcCommand) conn.CreateCommand ();
  2419. cmd.CommandText = select_data2;
  2420. param = cmd.Parameters.Add ("type_numeric2", OdbcType.Numeric);
  2421. param.Value = -4456.432m;
  2422. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2423. param.Value = 2;
  2424. dr = cmd.ExecuteReader ();
  2425. Assert.IsTrue (dr.Read (), "#D1");
  2426. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  2427. Assert.AreEqual (2, dr.GetValue (0), "#D3");
  2428. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#D4");
  2429. Assert.AreEqual (-4456.432m, dr.GetValue (1), "#D5");
  2430. Assert.IsFalse (dr.Read (), "#D6");
  2431. dr.Close ();
  2432. cmd.Dispose ();
  2433. cmd = (OdbcCommand) conn.CreateCommand ();
  2434. cmd.CommandText = select_data1;
  2435. param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
  2436. param.Value = 0m;
  2437. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2438. param.Value = 3;
  2439. dr = cmd.ExecuteReader ();
  2440. Assert.IsTrue (dr.Read (), "#E1");
  2441. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
  2442. Assert.AreEqual (3, dr.GetValue (0), "#E3");
  2443. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#E4");
  2444. Assert.AreEqual (0m, dr.GetValue (1), "#E5");
  2445. Assert.IsFalse (dr.Read (), "#E6");
  2446. dr.Close ();
  2447. cmd.Dispose ();
  2448. cmd = (OdbcCommand) conn.CreateCommand ();
  2449. cmd.CommandText = select_data1;
  2450. param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
  2451. param.Value = DBNull.Value;
  2452. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2453. param.Value = 4;
  2454. dr = cmd.ExecuteReader ();
  2455. Assert.IsFalse (dr.Read (), "#F");
  2456. dr.Close ();
  2457. cmd.Dispose ();
  2458. cmd = (OdbcCommand) conn.CreateCommand ();
  2459. cmd.CommandText = select_by_id;
  2460. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2461. param.Value = 4;
  2462. dr = cmd.ExecuteReader ();
  2463. Assert.IsTrue (dr.Read (), "#G1");
  2464. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
  2465. Assert.AreEqual (4, dr.GetValue (0), "#G3");
  2466. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#G4");
  2467. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#G5");
  2468. Assert.AreEqual (typeof (decimal), dr.GetFieldType (2), "#G6");
  2469. Assert.AreEqual (DBNull.Value, dr.GetValue (2), "#G7");
  2470. Assert.IsFalse (dr.Read (), "#G8");
  2471. dr.Close ();
  2472. cmd.Dispose ();
  2473. cmd = (OdbcCommand) conn.CreateCommand ();
  2474. cmd.CommandText = insert_data;
  2475. param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
  2476. param.Value = -1000.5678m;
  2477. param = cmd.Parameters.Add ("type_numeric2", OdbcType.Numeric);
  2478. param.Value = -1000.5678m;
  2479. cmd.ExecuteNonQuery ();
  2480. cmd.Dispose ();
  2481. cmd = (OdbcCommand) conn.CreateCommand ();
  2482. cmd.CommandText = select_data1;
  2483. param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
  2484. param.Value = -1000.5678m;
  2485. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2486. param.Value = 6000;
  2487. dr = cmd.ExecuteReader ();
  2488. Assert.IsFalse (dr.Read (), "#H");
  2489. dr.Close ();
  2490. cmd.Dispose ();
  2491. cmd = (OdbcCommand) conn.CreateCommand ();
  2492. cmd.CommandText = select_data1;
  2493. param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
  2494. param.Value = -1001;
  2495. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2496. param.Value = 6000;
  2497. dr = cmd.ExecuteReader ();
  2498. Assert.IsTrue (dr.Read (), "#I1");
  2499. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#I2");
  2500. Assert.AreEqual (6000, dr.GetValue (0), "#I3");
  2501. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#I4");
  2502. Assert.AreEqual (-1001m, dr.GetValue (1), "#I5");
  2503. Assert.IsFalse (dr.Read (), "#I6");
  2504. dr.Close ();
  2505. cmd.Dispose ();
  2506. cmd = (OdbcCommand) conn.CreateCommand ();
  2507. cmd.CommandText = select_data2;
  2508. param = cmd.Parameters.Add ("type_numeric2", OdbcType.Numeric);
  2509. param.Value = -1000.5678m;
  2510. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2511. param.Value = 6000;
  2512. dr = cmd.ExecuteReader ();
  2513. Assert.IsFalse (dr.Read (), "#J");
  2514. dr.Close ();
  2515. cmd.Dispose ();
  2516. cmd = (OdbcCommand) conn.CreateCommand ();
  2517. cmd.CommandText = select_data2;
  2518. param = cmd.Parameters.Add ("type_numeric2", OdbcType.Numeric);
  2519. param.Value = -1000.568m;
  2520. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2521. param.Value = 6000;
  2522. dr = cmd.ExecuteReader ();
  2523. Assert.IsTrue (dr.Read (), "#K1");
  2524. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#K2");
  2525. Assert.AreEqual (6000, dr.GetValue (0), "#K3");
  2526. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#K4");
  2527. Assert.AreEqual (-1000.568m, dr.GetValue (1), "#K5");
  2528. Assert.IsFalse (dr.Read (), "#K6");
  2529. dr.Close ();
  2530. cmd.Dispose ();
  2531. DBHelper.ExecuteNonQuery (conn, delete_data);
  2532. cmd = (OdbcCommand) conn.CreateCommand ();
  2533. cmd.CommandText = insert_data;
  2534. param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
  2535. param.Value = 56789m;
  2536. param.Precision = 7;
  2537. param.Scale = 2;
  2538. param = cmd.Parameters.Add ("type_numeric2", OdbcType.Numeric);
  2539. param.Value = 98765.5678m;
  2540. param.Precision = 10;
  2541. param.Scale = 2;
  2542. cmd.ExecuteNonQuery ();
  2543. cmd.Dispose ();
  2544. cmd = (OdbcCommand) conn.CreateCommand ();
  2545. cmd.CommandText = select_by_id;
  2546. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2547. param.Value = 6000;
  2548. dr = cmd.ExecuteReader ();
  2549. Assert.IsTrue (dr.Read (), "#L1");
  2550. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#L2");
  2551. Assert.AreEqual (6000, dr.GetValue (0), "#L3");
  2552. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#L4");
  2553. Assert.AreEqual (56789m, dr.GetValue (1), "#L5");
  2554. Assert.AreEqual (typeof (decimal), dr.GetFieldType (2), "#L6");
  2555. if (ConnectionManager.Instance.Odbc.EngineConfig.Type == EngineType.MySQL)
  2556. Assert.AreEqual (9876556.780m, dr.GetValue (2), "#L7");
  2557. else
  2558. Assert.AreEqual (98765.570m, dr.GetValue (2), "#L7");
  2559. Assert.IsFalse (dr.Read (), "#L8");
  2560. dr.Close ();
  2561. cmd.Dispose ();
  2562. DBHelper.ExecuteNonQuery (conn, delete_data);
  2563. cmd = (OdbcCommand) conn.CreateCommand ();
  2564. cmd.CommandText = insert_data;
  2565. param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
  2566. param.Value = DBNull.Value;
  2567. param = cmd.Parameters.Add ("type_numeric2", OdbcType.Numeric);
  2568. param.Value = DBNull.Value;
  2569. cmd.ExecuteNonQuery ();
  2570. cmd.Dispose ();
  2571. cmd = (OdbcCommand) conn.CreateCommand ();
  2572. cmd.CommandText = select_by_id;
  2573. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2574. param.Value = 6000;
  2575. dr = cmd.ExecuteReader ();
  2576. Assert.IsTrue (dr.Read (), "#M1");
  2577. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#M2");
  2578. Assert.AreEqual (6000, dr.GetValue (0), "#M3");
  2579. Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#M4");
  2580. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#M5");
  2581. Assert.AreEqual (typeof (decimal), dr.GetFieldType (2), "#M6");
  2582. Assert.AreEqual (DBNull.Value, dr.GetValue(1), "#M7");
  2583. Assert.AreEqual (DBNull.Value, dr.GetValue (2), "#M7");
  2584. Assert.IsFalse (dr.Read (), "#M8");
  2585. dr.Close ();
  2586. cmd.Dispose ();
  2587. } finally {
  2588. if (cmd != null)
  2589. cmd.Dispose ();
  2590. if (dr != null)
  2591. dr.Close ();
  2592. conn.Close ();
  2593. conn.Open ();
  2594. DBHelper.ExecuteNonQuery (conn, delete_data);
  2595. conn.Close ();
  2596. }
  2597. }
  2598. [Test]
  2599. public void NVarCharParameterTest ()
  2600. {
  2601. string insert_data = "insert into string_family (id, type_nvarchar) values (6000, ?)";
  2602. string select_data = "select type_nvarchar from string_family where type_nvarchar = ? and id = ?";
  2603. string select_by_id = "select type_nvarchar from string_family where id = ?";
  2604. string delete_data = "delete from string_family where id = 6000";
  2605. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  2606. IDataReader dr = null;
  2607. OdbcCommand cmd = null;
  2608. OdbcParameter param;
  2609. try {
  2610. cmd = conn.CreateCommand ();
  2611. cmd.CommandText = select_data;
  2612. param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar);
  2613. param.Value = "nv\u092d\u093e\u0930\u0924r";
  2614. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2615. param.Value = 1;
  2616. dr = cmd.ExecuteReader ();
  2617. Assert.IsTrue (dr.Read (), "#A1");
  2618. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#A2");
  2619. Assert.AreEqual ("nv\u092d\u093e\u0930\u0924r", dr.GetValue (0), "#A3");
  2620. Assert.IsFalse (dr.Read (), "#A4");
  2621. dr.Close ();
  2622. cmd.Dispose ();
  2623. cmd = conn.CreateCommand ();
  2624. cmd.CommandText = select_data;
  2625. param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar);
  2626. param.Value = "nv\u092d\u093e\u0930\u0924r ";
  2627. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2628. param.Value = 2;
  2629. dr = cmd.ExecuteReader ();
  2630. Assert.IsTrue (dr.Read (), "#B1");
  2631. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#B2");
  2632. Assert.AreEqual ("nv\u092d\u093e\u0930\u0924r ", dr.GetValue (0), "#B3");
  2633. Assert.IsFalse (dr.Read (), "#B4");
  2634. dr.Close ();
  2635. cmd.Dispose ();
  2636. cmd = conn.CreateCommand ();
  2637. cmd.CommandText = select_data;
  2638. param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar);
  2639. param.Value = string.Empty;
  2640. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2641. param.Value = 3;
  2642. dr = cmd.ExecuteReader ();
  2643. Assert.IsTrue (dr.Read (), "#C1");
  2644. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#C2");
  2645. Assert.AreEqual (string.Empty, dr.GetValue (0), "#C3");
  2646. Assert.IsFalse (dr.Read (), "#C4");
  2647. dr.Close ();
  2648. cmd.Dispose ();
  2649. cmd = conn.CreateCommand ();
  2650. cmd.CommandText = select_by_id;
  2651. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2652. param.Value = 4;
  2653. dr = cmd.ExecuteReader ();
  2654. Assert.IsTrue (dr.Read (), "#D1");
  2655. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#D2");
  2656. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
  2657. Assert.IsFalse (dr.Read (), "#D4");
  2658. dr.Close ();
  2659. cmd.Dispose ();
  2660. cmd = conn.CreateCommand ();
  2661. cmd.CommandText = insert_data;
  2662. param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar);
  2663. param.Value = "nvarchar ";
  2664. cmd.ExecuteNonQuery ();
  2665. cmd.Dispose ();
  2666. cmd = conn.CreateCommand ();
  2667. cmd.CommandText = select_data;
  2668. param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar);
  2669. param.Value = "nvarchar ";
  2670. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2671. param.Value = 6000;
  2672. dr = cmd.ExecuteReader ();
  2673. Assert.IsTrue (dr.Read (), "#E1");
  2674. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#E2");
  2675. Assert.AreEqual ("nvarchar ", dr.GetValue (0), "#E3");
  2676. Assert.IsFalse (dr.Read (), "#E4");
  2677. dr.Close ();
  2678. cmd.Dispose ();
  2679. DBHelper.ExecuteNonQuery (conn, delete_data);
  2680. cmd = conn.CreateCommand ();
  2681. cmd.CommandText = insert_data;
  2682. param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar, 6);
  2683. param.Value = "nv\u0488rchar";
  2684. cmd.ExecuteNonQuery ();
  2685. cmd.Dispose ();
  2686. cmd = conn.CreateCommand ();
  2687. cmd.CommandText = select_data;
  2688. param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar, 6);
  2689. param.Value = "nv\u0488rchar";
  2690. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2691. param.Value = 6000;
  2692. dr = cmd.ExecuteReader ();
  2693. Assert.IsTrue (dr.Read (), "#F1");
  2694. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#F2");
  2695. Assert.AreEqual ("nv\u0488rch", dr.GetValue (0), "#F3");
  2696. Assert.IsFalse (dr.Read (), "#F4");
  2697. dr.Close ();
  2698. cmd.Dispose ();
  2699. DBHelper.ExecuteNonQuery (conn, delete_data);
  2700. cmd = conn.CreateCommand ();
  2701. cmd.CommandText = insert_data;
  2702. param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar, 12);
  2703. param.Value = "nvarch\u0488r ";
  2704. cmd.ExecuteNonQuery ();
  2705. cmd.Dispose ();
  2706. cmd = conn.CreateCommand ();
  2707. cmd.CommandText = select_data;
  2708. param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar, 12);
  2709. param.Value = "nvarch\u0488r ";
  2710. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2711. param.Value = 6000;
  2712. dr = cmd.ExecuteReader ();
  2713. Assert.IsTrue (dr.Read (), "#G1");
  2714. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#G2");
  2715. Assert.AreEqual ("nvarch\u0488r ", dr.GetValue (0), "#G3");
  2716. Assert.IsFalse (dr.Read (), "#G4");
  2717. dr.Close ();
  2718. cmd.Dispose ();
  2719. DBHelper.ExecuteNonQuery (conn, delete_data);
  2720. cmd = conn.CreateCommand ();
  2721. cmd.CommandText = insert_data;
  2722. param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar, 12);
  2723. param.Value = string.Empty;
  2724. cmd.ExecuteNonQuery ();
  2725. cmd.Dispose ();
  2726. cmd = conn.CreateCommand ();
  2727. cmd.CommandText = select_data;
  2728. param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar, 12);
  2729. param.Value = string.Empty;
  2730. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2731. param.Value = 6000;
  2732. dr = cmd.ExecuteReader ();
  2733. Assert.IsTrue (dr.Read (), "#H1");
  2734. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#H2");
  2735. Assert.AreEqual (string.Empty, dr.GetValue (0), "#H3");
  2736. Assert.IsFalse (dr.Read (), "#H4");
  2737. dr.Close ();
  2738. cmd.Dispose ();
  2739. DBHelper.ExecuteNonQuery (conn, delete_data);
  2740. cmd = conn.CreateCommand ();
  2741. cmd.CommandText = insert_data;
  2742. param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar);
  2743. param.Value = DBNull.Value;
  2744. cmd.ExecuteNonQuery ();
  2745. cmd.Dispose ();
  2746. cmd = conn.CreateCommand ();
  2747. cmd.CommandText = select_by_id;
  2748. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2749. param.Value = 6000;
  2750. dr = cmd.ExecuteReader ();
  2751. Assert.IsTrue (dr.Read (), "#I1");
  2752. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#I2");
  2753. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#I3");
  2754. Assert.IsFalse (dr.Read (), "#I4");
  2755. dr.Close ();
  2756. cmd.Dispose ();
  2757. } finally {
  2758. if (cmd != null)
  2759. cmd.Dispose ();
  2760. if (dr != null)
  2761. dr.Close ();
  2762. conn.Close ();
  2763. conn.Open ();
  2764. DBHelper.ExecuteNonQuery (conn, delete_data);
  2765. conn.Close ();
  2766. }
  2767. }
  2768. [Test]
  2769. public void VarBinaryParameterTest ()
  2770. {
  2771. string insert_data = "insert into binary_family (id, type_varbinary) values (6000, ?)";
  2772. string select_data = "select id, type_varbinary from binary_family where type_varbinary = ? and id = ?";
  2773. string select_by_id = "select id, type_varbinary from binary_family where id = ?";
  2774. string delete_data = "delete from binary_family where id = 6000";
  2775. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  2776. IDataReader dr = null;
  2777. OdbcCommand cmd = null;
  2778. OdbcParameter param;
  2779. try {
  2780. byte [] bytes = new byte [] { 0x30, 0x31, 0x32,
  2781. 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
  2782. 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
  2783. 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33,
  2784. 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00,
  2785. 0x44, 0x53};
  2786. cmd = (OdbcCommand) conn.CreateCommand ();
  2787. cmd.CommandText = select_data;
  2788. param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
  2789. param.Value = bytes;
  2790. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2791. param.Value = 1;
  2792. dr = cmd.ExecuteReader ();
  2793. Assert.IsTrue (dr.Read (), "#A1");
  2794. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
  2795. Assert.AreEqual (1, dr.GetValue (0), "#A3");
  2796. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#A4");
  2797. Assert.AreEqual (bytes, dr.GetValue (1), "#A5");
  2798. Assert.IsFalse (dr.Read (), "#A6");
  2799. dr.Close ();
  2800. cmd.Dispose ();
  2801. bytes = new byte [] { 0x00, 0x39, 0x38, 0x37,
  2802. 0x36, 0x35, 0x00, 0x33, 0x32, 0x31, 0x30,
  2803. 0x31, 0x32, 0x33, 0x34 };
  2804. cmd = (OdbcCommand) conn.CreateCommand ();
  2805. cmd.CommandText = select_data;
  2806. param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
  2807. param.Value = bytes;
  2808. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2809. param.Value = 2;
  2810. dr = cmd.ExecuteReader ();
  2811. Assert.IsTrue (dr.Read (), "#B1");
  2812. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  2813. Assert.AreEqual (2, dr.GetValue (0), "#B3");
  2814. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#B4");
  2815. Assert.AreEqual (bytes, dr.GetValue (1), "#B5");
  2816. Assert.IsFalse (dr.Read (), "#B6");
  2817. dr.Close ();
  2818. cmd.Dispose ();
  2819. bytes = new byte [0];
  2820. cmd = (OdbcCommand) conn.CreateCommand ();
  2821. cmd.CommandText = select_data;
  2822. param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
  2823. param.Value = bytes;
  2824. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2825. param.Value = 3;
  2826. dr = cmd.ExecuteReader ();
  2827. Assert.IsTrue (dr.Read (), "#C1");
  2828. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
  2829. Assert.AreEqual (3, dr.GetValue (0), "#C3");
  2830. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#C4");
  2831. Assert.AreEqual (bytes, dr.GetValue (1), "#C5");
  2832. Assert.IsFalse (dr.Read (), "#C6");
  2833. dr.Close ();
  2834. cmd.Dispose ();
  2835. cmd = (OdbcCommand) conn.CreateCommand ();
  2836. cmd.CommandText = select_by_id;
  2837. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2838. param.Value = 4;
  2839. dr = cmd.ExecuteReader ();
  2840. Assert.IsTrue (dr.Read (), "#D1");
  2841. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  2842. Assert.AreEqual (4, dr.GetValue (0), "#D3");
  2843. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#D4");
  2844. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
  2845. Assert.IsFalse (dr.Read (), "#D6");
  2846. dr.Close ();
  2847. cmd.Dispose ();
  2848. bytes = new byte [0];
  2849. cmd = (OdbcCommand) conn.CreateCommand ();
  2850. cmd.CommandText = insert_data;
  2851. param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
  2852. param.Value = bytes;
  2853. cmd.ExecuteNonQuery ();
  2854. cmd.Dispose ();
  2855. cmd = (OdbcCommand) conn.CreateCommand ();
  2856. cmd.CommandText = select_data;
  2857. param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
  2858. param.Value = bytes;
  2859. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2860. param.Value = 6000;
  2861. dr = cmd.ExecuteReader ();
  2862. Assert.IsTrue (dr.Read (), "#E1");
  2863. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
  2864. Assert.AreEqual (6000, dr.GetValue (0), "#E3");
  2865. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#E4");
  2866. Assert.AreEqual (bytes, dr.GetValue (1), "#E5");
  2867. Assert.IsFalse (dr.Read (), "#E6");
  2868. dr.Close ();
  2869. cmd.Dispose ();
  2870. DBHelper.ExecuteNonQuery (conn, delete_data);
  2871. bytes = new byte [] { 0x05 };
  2872. cmd = (OdbcCommand) conn.CreateCommand ();
  2873. cmd.CommandText = insert_data;
  2874. param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
  2875. param.Value = bytes;
  2876. cmd.ExecuteNonQuery ();
  2877. cmd.Dispose ();
  2878. cmd = (OdbcCommand) conn.CreateCommand ();
  2879. cmd.CommandText = select_data;
  2880. param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
  2881. param.Value = bytes;
  2882. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2883. param.Value = 6000;
  2884. dr = cmd.ExecuteReader ();
  2885. Assert.IsTrue (dr.Read (), "#F1");
  2886. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
  2887. Assert.AreEqual (6000, dr.GetValue (0), "#F3");
  2888. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#F4");
  2889. Assert.AreEqual (bytes, dr.GetValue (1), "#F5");
  2890. Assert.IsFalse (dr.Read (), "#F6");
  2891. dr.Close ();
  2892. cmd.Dispose ();
  2893. DBHelper.ExecuteNonQuery (conn, delete_data);
  2894. bytes = new byte [] { 0x34, 0x00, 0x32 };
  2895. cmd = (OdbcCommand) conn.CreateCommand ();
  2896. cmd.CommandText = insert_data;
  2897. param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
  2898. param.Value = bytes;
  2899. cmd.ExecuteNonQuery ();
  2900. cmd.Dispose ();
  2901. cmd = (OdbcCommand) conn.CreateCommand ();
  2902. cmd.CommandText = select_data;
  2903. param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
  2904. param.Value = bytes;
  2905. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2906. param.Value = 6000;
  2907. dr = cmd.ExecuteReader ();
  2908. Assert.IsTrue (dr.Read (), "#G1");
  2909. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
  2910. Assert.AreEqual (6000, dr.GetValue (0), "#G3");
  2911. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#G4");
  2912. Assert.AreEqual (bytes, dr.GetValue (1), "#G5");
  2913. Assert.IsFalse (dr.Read (), "#G6");
  2914. dr.Close ();
  2915. cmd.Dispose ();
  2916. DBHelper.ExecuteNonQuery (conn, delete_data);
  2917. bytes = new byte [] { 0x34, 0x00, 0x32, 0x05, 0x07, 0x13 };
  2918. cmd = (OdbcCommand) conn.CreateCommand ();
  2919. cmd.CommandText = insert_data;
  2920. param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary, 4);
  2921. param.Value = bytes;
  2922. cmd.ExecuteNonQuery ();
  2923. cmd.Dispose ();
  2924. cmd = (OdbcCommand) conn.CreateCommand ();
  2925. cmd.CommandText = select_data;
  2926. param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary, 4);
  2927. param.Value = bytes;
  2928. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2929. param.Value = 6000;
  2930. dr = cmd.ExecuteReader ();
  2931. Assert.IsTrue (dr.Read (), "#H1");
  2932. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
  2933. Assert.AreEqual (6000, dr.GetValue (0), "#H3");
  2934. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#H4");
  2935. Assert.AreEqual (new byte [] { 0x34, 0x00, 0x32, 0x05 }, dr.GetValue (1), "#H5");
  2936. Assert.IsFalse (dr.Read (), "#H6");
  2937. dr.Close ();
  2938. cmd.Dispose ();
  2939. DBHelper.ExecuteNonQuery (conn, delete_data);
  2940. cmd = (OdbcCommand) conn.CreateCommand ();
  2941. cmd.CommandText = insert_data;
  2942. param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
  2943. param.Value = DBNull.Value;
  2944. cmd.ExecuteNonQuery ();
  2945. cmd.Dispose ();
  2946. cmd = (OdbcCommand) conn.CreateCommand ();
  2947. cmd.CommandText = select_by_id;
  2948. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2949. param.Value = 6000;
  2950. dr = cmd.ExecuteReader ();
  2951. Assert.IsTrue (dr.Read (), "#I1");
  2952. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#I2");
  2953. Assert.AreEqual (6000, dr.GetValue (0), "#I3");
  2954. Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#I4");
  2955. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#I5");
  2956. Assert.IsFalse (dr.Read (), "#I6");
  2957. dr.Close ();
  2958. cmd.Dispose ();
  2959. } finally {
  2960. if (dr != null)
  2961. dr.Close ();
  2962. if (cmd != null)
  2963. cmd.Dispose ();
  2964. conn.Close ();
  2965. conn.Open ();
  2966. DBHelper.ExecuteNonQuery (conn, delete_data);
  2967. conn.Close ();
  2968. }
  2969. }
  2970. [Test]
  2971. public void VarCharParameterTest ()
  2972. {
  2973. string insert_data = "insert into string_family (id, type_varchar) values (6000, ?)";
  2974. string select_data = "select type_varchar from string_family where type_varchar = ? and id = ?";
  2975. string select_by_id = "select type_varchar from string_family where id = ?";
  2976. string delete_data = "delete from string_family where id = 6000";
  2977. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  2978. IDataReader dr = null;
  2979. OdbcCommand cmd = null;
  2980. OdbcParameter param;
  2981. try {
  2982. cmd = conn.CreateCommand ();
  2983. cmd.CommandText = select_data;
  2984. param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar);
  2985. param.Value = "varchar";
  2986. param = cmd.Parameters.Add ("id", OdbcType.Int);
  2987. param.Value = 1;
  2988. dr = cmd.ExecuteReader ();
  2989. Assert.IsTrue (dr.Read (), "#A1");
  2990. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#A2");
  2991. Assert.AreEqual ("varchar", dr.GetValue (0), "#A3");
  2992. Assert.IsFalse (dr.Read (), "#A4");
  2993. dr.Close ();
  2994. cmd.Dispose ();
  2995. cmd = conn.CreateCommand ();
  2996. cmd.CommandText = select_data;
  2997. param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar);
  2998. param.Value = "varchar ";
  2999. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3000. param.Value = 2;
  3001. dr = cmd.ExecuteReader ();
  3002. Assert.IsTrue (dr.Read (), "#B1");
  3003. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#B2");
  3004. Assert.AreEqual ("varchar ", dr.GetValue (0), "#B3");
  3005. Assert.IsFalse (dr.Read (), "#B4");
  3006. dr.Close ();
  3007. cmd.Dispose ();
  3008. cmd = conn.CreateCommand ();
  3009. cmd.CommandText = select_data;
  3010. param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar);
  3011. param.Value = string.Empty;
  3012. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3013. param.Value = 3;
  3014. dr = cmd.ExecuteReader ();
  3015. Assert.IsTrue (dr.Read (), "#C1");
  3016. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#C2");
  3017. Assert.AreEqual (string.Empty, dr.GetValue (0), "#C3");
  3018. Assert.IsFalse (dr.Read (), "#C4");
  3019. dr.Close ();
  3020. cmd.Dispose ();
  3021. cmd = conn.CreateCommand ();
  3022. cmd.CommandText = select_by_id;
  3023. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3024. param.Value = 4;
  3025. dr = cmd.ExecuteReader ();
  3026. Assert.IsTrue (dr.Read (), "#D1");
  3027. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#D2");
  3028. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
  3029. Assert.IsFalse (dr.Read (), "#D4");
  3030. dr.Close ();
  3031. cmd.Dispose ();
  3032. cmd = conn.CreateCommand ();
  3033. cmd.CommandText = insert_data;
  3034. param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar, 30);
  3035. param.Value = "varchar ";
  3036. cmd.ExecuteNonQuery ();
  3037. cmd.Dispose ();
  3038. cmd = conn.CreateCommand ();
  3039. cmd.CommandText = select_data;
  3040. param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar);
  3041. param.Value = "varchar ";
  3042. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3043. param.Value = 6000;
  3044. dr = cmd.ExecuteReader ();
  3045. Assert.IsTrue (dr.Read (), "#E1");
  3046. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#E2");
  3047. Assert.AreEqual ("varchar ", dr.GetValue (0), "#E3");
  3048. Assert.IsFalse (dr.Read (), "#E4");
  3049. dr.Close ();
  3050. cmd.Dispose ();
  3051. DBHelper.ExecuteNonQuery (conn, delete_data);
  3052. cmd = conn.CreateCommand ();
  3053. cmd.CommandText = insert_data;
  3054. param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar, 3);
  3055. param.Value = "vchar";
  3056. cmd.ExecuteNonQuery ();
  3057. cmd.Dispose ();
  3058. cmd = conn.CreateCommand ();
  3059. cmd.CommandText = select_data;
  3060. param = cmd.Parameters.Add ("type_nvarchar", OdbcType.VarChar, 3);
  3061. param.Value = "vcharxzer";
  3062. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3063. param.Value = 6000;
  3064. dr = cmd.ExecuteReader ();
  3065. Assert.IsTrue (dr.Read (), "#F1");
  3066. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#F2");
  3067. Assert.AreEqual ("vch", dr.GetValue (0), "#F3");
  3068. Assert.IsFalse (dr.Read (), "#F4");
  3069. dr.Close ();
  3070. cmd.Dispose ();
  3071. DBHelper.ExecuteNonQuery (conn, delete_data);
  3072. cmd = conn.CreateCommand ();
  3073. cmd.CommandText = insert_data;
  3074. param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar, 3);
  3075. param.Value = string.Empty;
  3076. cmd.ExecuteNonQuery ();
  3077. cmd.Dispose ();
  3078. cmd = conn.CreateCommand ();
  3079. cmd.CommandText = select_data;
  3080. param = cmd.Parameters.Add ("type_nvarchar", OdbcType.VarChar, 3);
  3081. param.Value = string.Empty;
  3082. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3083. param.Value = 6000;
  3084. dr = cmd.ExecuteReader ();
  3085. Assert.IsTrue (dr.Read (), "#G1");
  3086. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#G2");
  3087. Assert.AreEqual (string.Empty, dr.GetValue (0), "#G3");
  3088. Assert.IsFalse (dr.Read (), "#G4");
  3089. dr.Close ();
  3090. cmd.Dispose ();
  3091. DBHelper.ExecuteNonQuery (conn, delete_data);
  3092. cmd = conn.CreateCommand ();
  3093. cmd.CommandText = insert_data;
  3094. param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar, 5);
  3095. param.Value = DBNull.Value;
  3096. cmd.ExecuteNonQuery ();
  3097. cmd.Dispose ();
  3098. cmd = conn.CreateCommand ();
  3099. cmd.CommandText = select_by_id;
  3100. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3101. param.Value = 6000;
  3102. dr = cmd.ExecuteReader ();
  3103. Assert.IsTrue (dr.Read (), "#H1");
  3104. Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#H2");
  3105. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#H3");
  3106. Assert.IsFalse (dr.Read (), "#H4");
  3107. dr.Close ();
  3108. cmd.Dispose ();
  3109. } finally {
  3110. if (cmd != null)
  3111. cmd.Dispose ();
  3112. if (dr != null)
  3113. dr.Close ();
  3114. conn.Close ();
  3115. conn.Open ();
  3116. DBHelper.ExecuteNonQuery (conn, delete_data);
  3117. conn.Close ();
  3118. }
  3119. }
  3120. [Test]
  3121. public void RealParameterTest ()
  3122. {
  3123. string insert_data = "insert into numeric_family (id, type_float) values (6000, ?)";
  3124. string select_data = "select id, type_float from numeric_family where type_float = ? and id = ?";
  3125. string select_by_id = "select id, type_float from numeric_family where id = ?";
  3126. string delete_data = "delete from numeric_family where id = 6000";
  3127. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  3128. IDataReader dr = null;
  3129. OdbcCommand cmd = null;
  3130. OdbcParameter param;
  3131. try {
  3132. cmd = (OdbcCommand) conn.CreateCommand ();
  3133. cmd.CommandText = select_by_id;
  3134. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3135. param.Value = 1;
  3136. dr = cmd.ExecuteReader ();
  3137. Assert.IsTrue (dr.Read (), "#D1");
  3138. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  3139. Assert.AreEqual (1, dr.GetValue (0), "#D3");
  3140. Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#D4");
  3141. Assert.AreEqual (3.39999995E+38f, dr.GetValue (1), "#D5");
  3142. Assert.IsFalse (dr.Read (), "#D6");
  3143. dr.Close ();
  3144. cmd.Dispose ();
  3145. cmd = (OdbcCommand) conn.CreateCommand ();
  3146. cmd.CommandText = select_data;
  3147. param = cmd.Parameters.Add ("type_float", OdbcType.Real);
  3148. param.Value = 3.40E+38;
  3149. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3150. param.Value = 1;
  3151. dr = cmd.ExecuteReader ();
  3152. Assert.IsTrue (dr.Read (), "#A1");
  3153. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
  3154. Assert.AreEqual (1, dr.GetValue (0), "#A2");
  3155. Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#A3");
  3156. Assert.AreEqual (3.40E+38f, (float)dr.GetValue (1), 0.0000001f, "#A4");
  3157. Assert.IsFalse (dr.Read (), "#A5");
  3158. dr.Close ();
  3159. cmd.Dispose ();
  3160. cmd = (OdbcCommand) conn.CreateCommand ();
  3161. cmd.CommandText = select_data;
  3162. param = cmd.Parameters.Add ("type_float", OdbcType.Real);
  3163. param.Value = -3.40E+38;
  3164. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3165. param.Value = 2;
  3166. dr = cmd.ExecuteReader ();
  3167. Assert.IsTrue (dr.Read (), "#B1");
  3168. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  3169. Assert.AreEqual (2, dr.GetValue (0), "#B2");
  3170. Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#B3");
  3171. Assert.AreEqual(-3.40E+38f, (float)dr.GetValue(1), 0.0000001f, "#B4");
  3172. Assert.IsFalse (dr.Read (), "#B5");
  3173. dr.Close ();
  3174. cmd.Dispose ();
  3175. cmd = (OdbcCommand) conn.CreateCommand ();
  3176. cmd.CommandText = select_data;
  3177. param = cmd.Parameters.Add ("type_float", OdbcType.Real);
  3178. param.Value = 0F;
  3179. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3180. param.Value = 3;
  3181. dr = cmd.ExecuteReader ();
  3182. Assert.IsTrue (dr.Read (), "#C1");
  3183. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
  3184. Assert.AreEqual (3, dr.GetValue (0), "#C2");
  3185. Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#C3");
  3186. Assert.AreEqual (0F, dr.GetValue (1), "#C4");
  3187. Assert.IsFalse (dr.Read (), "#C5");
  3188. dr.Close ();
  3189. cmd.Dispose ();
  3190. cmd = (OdbcCommand) conn.CreateCommand ();
  3191. cmd.CommandText = select_by_id;
  3192. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3193. param.Value = 4;
  3194. dr = cmd.ExecuteReader ();
  3195. Assert.IsTrue (dr.Read (), "#D1");
  3196. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  3197. Assert.AreEqual (4, dr.GetValue (0), "#D3");
  3198. Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#D4");
  3199. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
  3200. Assert.IsFalse (dr.Read (), "#D6");
  3201. dr.Close ();
  3202. cmd.Dispose ();
  3203. cmd = (OdbcCommand) conn.CreateCommand ();
  3204. cmd.CommandText = insert_data;
  3205. param = cmd.Parameters.Add ("type_float", OdbcType.Real);
  3206. param.Value = 3.40E+38;
  3207. cmd.ExecuteNonQuery ();
  3208. cmd.Dispose ();
  3209. cmd = (OdbcCommand) conn.CreateCommand ();
  3210. cmd.CommandText = select_by_id;
  3211. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3212. param.Value = 6000;
  3213. dr = cmd.ExecuteReader ();
  3214. Assert.IsTrue (dr.Read (), "#E1");
  3215. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
  3216. Assert.AreEqual (6000, dr.GetValue (0), "#E3");
  3217. Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#E4");
  3218. Assert.AreEqual(3.40E+38f, (float)dr.GetValue(1), 0.0000001f, "#E4");
  3219. Assert.IsFalse (dr.Read (), "#E6");
  3220. dr.Close ();
  3221. cmd.Dispose ();
  3222. DBHelper.ExecuteNonQuery (conn, delete_data);
  3223. cmd = (OdbcCommand) conn.CreateCommand ();
  3224. cmd.CommandText = insert_data;
  3225. param = cmd.Parameters.Add ("type_float", OdbcType.Real);
  3226. param.Value = -3.40E+38;
  3227. cmd.ExecuteNonQuery ();
  3228. cmd.Dispose ();
  3229. cmd = (OdbcCommand) conn.CreateCommand ();
  3230. cmd.CommandText = select_by_id;
  3231. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3232. param.Value = 6000;
  3233. dr = cmd.ExecuteReader ();
  3234. Assert.IsTrue (dr.Read (), "#F1");
  3235. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
  3236. Assert.AreEqual (6000, dr.GetValue (0), "#F3");
  3237. Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#F4");
  3238. Assert.AreEqual (-3.40E+38f, (float)dr.GetValue(1), 0.0000001f, "#F4");
  3239. Assert.IsFalse (dr.Read (), "#F6");
  3240. dr.Close ();
  3241. cmd.Dispose ();
  3242. DBHelper.ExecuteNonQuery (conn, delete_data);
  3243. cmd = (OdbcCommand) conn.CreateCommand ();
  3244. cmd.CommandText = insert_data;
  3245. param = cmd.Parameters.Add ("type_float", OdbcType.Real);
  3246. param.Value = 0F;
  3247. cmd.ExecuteNonQuery ();
  3248. cmd.Dispose ();
  3249. cmd = (OdbcCommand) conn.CreateCommand ();
  3250. cmd.CommandText = select_by_id;
  3251. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3252. param.Value = 6000;
  3253. dr = cmd.ExecuteReader ();
  3254. Assert.IsTrue (dr.Read (), "#G1");
  3255. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
  3256. Assert.AreEqual (6000, dr.GetValue (0), "#G3");
  3257. Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#G4");
  3258. Assert.AreEqual (0F, dr.GetValue (1), "#G5");
  3259. Assert.IsFalse (dr.Read (), "#G6");
  3260. dr.Close ();
  3261. cmd.Dispose ();
  3262. DBHelper.ExecuteNonQuery (conn, delete_data);
  3263. cmd = (OdbcCommand) conn.CreateCommand ();
  3264. cmd.CommandText = insert_data;
  3265. param = cmd.Parameters.Add ("type_float", OdbcType.Real);
  3266. param.Value = DBNull.Value;
  3267. cmd.ExecuteNonQuery ();
  3268. cmd.Dispose ();
  3269. cmd = (OdbcCommand) conn.CreateCommand ();
  3270. cmd.CommandText = select_by_id;
  3271. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3272. param.Value = 6000;
  3273. dr = cmd.ExecuteReader ();
  3274. Assert.IsTrue (dr.Read (), "#H1");
  3275. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
  3276. Assert.AreEqual (6000, dr.GetValue (0), "#H3");
  3277. Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#H4");
  3278. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#H5");
  3279. Assert.IsFalse (dr.Read (), "#H6");
  3280. dr.Close ();
  3281. cmd.Dispose ();
  3282. } finally {
  3283. if (dr != null)
  3284. dr.Close ();
  3285. if (cmd != null)
  3286. cmd.Dispose ();
  3287. conn.Close ();
  3288. conn.Open ();
  3289. DBHelper.ExecuteNonQuery (conn, delete_data);
  3290. conn.Close ();
  3291. }
  3292. }
  3293. [Test]
  3294. public void SmallDateTimeParameterTest ()
  3295. {
  3296. string insert_data = "insert into datetime_family (id, type_smalldatetime) values (6000, ?)";
  3297. string select_data = "select id, type_smalldatetime from datetime_family where type_smalldatetime = ? and id = ?";
  3298. string select_by_id = "select id, type_smalldatetime from datetime_family where id = ?";
  3299. string delete_data = "delete from datetime_family where id = 6000";
  3300. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  3301. IDataReader dr = null;
  3302. OdbcCommand cmd = null;
  3303. OdbcParameter param;
  3304. try {
  3305. DateTime date = DateTime.Parse ("2037-12-31 23:59:00");
  3306. cmd = (OdbcCommand) conn.CreateCommand ();
  3307. cmd.CommandText = select_data;
  3308. param = cmd.Parameters.Add ("type_smalldatetime", OdbcType.SmallDateTime);
  3309. param.Value = date;
  3310. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3311. param.Value = 1;
  3312. dr = cmd.ExecuteReader ();
  3313. Assert.IsTrue (dr.Read (), "#A1");
  3314. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
  3315. Assert.AreEqual (1, dr.GetValue (0), "#A3");
  3316. Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#A4");
  3317. Assert.AreEqual (date, dr.GetValue (1), "#A5");
  3318. Assert.IsFalse (dr.Read (), "#A6");
  3319. dr.Close ();
  3320. cmd.Dispose ();
  3321. cmd = (OdbcCommand) conn.CreateCommand ();
  3322. cmd.CommandText = select_by_id;
  3323. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3324. param.Value = 4;
  3325. dr = cmd.ExecuteReader ();
  3326. Assert.IsTrue (dr.Read (), "#B1");
  3327. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  3328. Assert.AreEqual (4, dr.GetValue (0), "#B3");
  3329. Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#B4");
  3330. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#B5");
  3331. Assert.IsFalse (dr.Read (), "#B6");
  3332. dr.Close ();
  3333. cmd.Dispose ();
  3334. date = new DateTime (1973, 8, 13, 17, 55, 00);
  3335. cmd = (OdbcCommand) conn.CreateCommand ();
  3336. cmd.CommandText = insert_data;
  3337. param = cmd.Parameters.Add ("type_smalldatetime", OdbcType.SmallDateTime);
  3338. param.Value = date;
  3339. cmd.ExecuteNonQuery ();
  3340. cmd.Dispose ();
  3341. cmd = (OdbcCommand) conn.CreateCommand ();
  3342. cmd.CommandText = select_data;
  3343. param = cmd.Parameters.Add ("type_smalldatetime", OdbcType.SmallDateTime);
  3344. param.Value = date;
  3345. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3346. param.Value = 6000;
  3347. dr = cmd.ExecuteReader ();
  3348. Assert.IsTrue (dr.Read (), "#C1");
  3349. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
  3350. Assert.AreEqual (6000, dr.GetValue (0), "#C3");
  3351. Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#C4");
  3352. Assert.AreEqual (date, dr.GetValue (1), "#C5");
  3353. Assert.IsFalse (dr.Read (), "#C6");
  3354. dr.Close ();
  3355. cmd.Dispose ();
  3356. DBHelper.ExecuteNonQuery (conn, delete_data);
  3357. cmd = (OdbcCommand) conn.CreateCommand ();
  3358. cmd.CommandText = insert_data;
  3359. param = cmd.Parameters.Add ("type_smalldatetime", OdbcType.SmallDateTime);
  3360. param.Value = DBNull.Value;
  3361. cmd.ExecuteNonQuery ();
  3362. cmd.Dispose ();
  3363. cmd = (OdbcCommand) conn.CreateCommand ();
  3364. cmd.CommandText = select_by_id;
  3365. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3366. param.Value = 6000;
  3367. dr = cmd.ExecuteReader ();
  3368. Assert.IsTrue (dr.Read (), "#D1");
  3369. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  3370. Assert.AreEqual (6000, dr.GetValue (0), "#D3");
  3371. Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#D4");
  3372. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
  3373. Assert.IsFalse (dr.Read (), "#D6");
  3374. dr.Close ();
  3375. cmd.Dispose ();
  3376. } finally {
  3377. if (dr != null)
  3378. dr.Close ();
  3379. if (cmd != null)
  3380. cmd.Dispose ();
  3381. conn.Close ();
  3382. conn.Open ();
  3383. DBHelper.ExecuteNonQuery (conn, delete_data);
  3384. conn.Close ();
  3385. }
  3386. }
  3387. [Test]
  3388. public void DateTimeParameterTest ()
  3389. {
  3390. string insert_data = "insert into datetime_family (id, type_datetime) values (6000, ?)";
  3391. string select_data = "select id, type_datetime from datetime_family where type_datetime = ? and id = ?";
  3392. string select_by_id = "select id, type_datetime from datetime_family where id = ?";
  3393. string delete_data = "delete from datetime_family where id = 6000";
  3394. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  3395. IDataReader dr = null;
  3396. OdbcCommand cmd = null;
  3397. OdbcParameter param;
  3398. try {
  3399. DateTime date = DateTime.ParseExact ("9999-12-31 23:59:59",
  3400. "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
  3401. cmd = conn.CreateCommand ();
  3402. cmd.CommandText = select_data;
  3403. param = cmd.Parameters.Add ("type_datetime", OdbcType.DateTime);
  3404. param.Value = date;
  3405. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3406. param.Value = 1;
  3407. dr = cmd.ExecuteReader ();
  3408. Assert.IsTrue (dr.Read (), "#A1");
  3409. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
  3410. Assert.AreEqual (1, dr [0], "#A3");
  3411. Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#A4");
  3412. if (ConnectionManager.Instance.Odbc.EngineConfig.SupportsMicroseconds)
  3413. Assert.AreEqual (date, dr [1], "#A5");
  3414. else
  3415. Assert.AreEqual (new DateTime (9999, 12, 31, 23, 59, 59), dr [1], "#A5");
  3416. Assert.IsFalse (dr.Read (), "#A6");
  3417. dr.Close ();
  3418. cmd.Dispose ();
  3419. cmd = conn.CreateCommand ();
  3420. cmd.CommandText = select_by_id;
  3421. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3422. param.Value = 4;
  3423. dr = cmd.ExecuteReader ();
  3424. Assert.IsTrue (dr.Read (), "#B1");
  3425. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
  3426. Assert.AreEqual (4, dr.GetValue (0), "#B3");
  3427. Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#B4");
  3428. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#B5");
  3429. Assert.IsFalse (dr.Read (), "#B6");
  3430. dr.Close ();
  3431. cmd.Dispose ();
  3432. date = new DateTime (1973, 8, 13, 17, 54, 34);
  3433. cmd = conn.CreateCommand ();
  3434. cmd.CommandText = insert_data;
  3435. param = cmd.Parameters.Add ("type_datetime", OdbcType.DateTime);
  3436. param.Value = date;
  3437. cmd.ExecuteNonQuery ();
  3438. cmd.Dispose ();
  3439. cmd = conn.CreateCommand ();
  3440. cmd.CommandText = select_data;
  3441. param = cmd.Parameters.Add ("type_datetime", OdbcType.DateTime);
  3442. param.Value = date;
  3443. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3444. param.Value = 6000;
  3445. dr = cmd.ExecuteReader ();
  3446. Assert.IsTrue (dr.Read (), "#C1");
  3447. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
  3448. Assert.AreEqual (6000, dr.GetValue (0), "#C3");
  3449. Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#C4");
  3450. Assert.AreEqual (new DateTime (1973, 8, 13, 17, 54, 34), dr.GetValue (1), "#C5");
  3451. Assert.IsFalse (dr.Read (), "#C6");
  3452. dr.Close ();
  3453. cmd.Dispose ();
  3454. DBHelper.ExecuteNonQuery (conn, delete_data);
  3455. cmd = conn.CreateCommand ();
  3456. cmd.CommandText = insert_data;
  3457. param = cmd.Parameters.Add ("type_datetime", OdbcType.DateTime);
  3458. param.Value = DBNull.Value;
  3459. cmd.ExecuteNonQuery ();
  3460. cmd.Dispose ();
  3461. cmd = conn.CreateCommand ();
  3462. cmd.CommandText = select_by_id;
  3463. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3464. param.Value = 6000;
  3465. dr = cmd.ExecuteReader ();
  3466. Assert.IsTrue (dr.Read (), "#D1");
  3467. Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
  3468. Assert.AreEqual (6000, dr.GetValue (0), "#D3");
  3469. Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#D4");
  3470. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
  3471. Assert.IsFalse (dr.Read (), "#D6");
  3472. dr.Close ();
  3473. cmd.Dispose ();
  3474. } finally {
  3475. if (dr != null)
  3476. dr.Close ();
  3477. if (cmd != null)
  3478. cmd.Dispose ();
  3479. conn.Close ();
  3480. conn.Open ();
  3481. DBHelper.ExecuteNonQuery (conn, delete_data);
  3482. conn.Close ();
  3483. }
  3484. }
  3485. [Test]
  3486. public void DateParameterTest ()
  3487. {
  3488. string insert_data = "insert into datetime_family (id, type_date) values (6000, ?)";
  3489. string select_data = "select type_date from datetime_family where type_date = ? and id = 1";
  3490. string select_by_id = "select type_date from datetime_family where id = ?";
  3491. string delete_data = "delete from datetime_family where id = 6000";
  3492. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  3493. IDataReader dr = null;
  3494. OdbcCommand cmd = null;
  3495. OdbcParameter param;
  3496. try {
  3497. if (!ConnectionManager.Instance.Odbc.EngineConfig.SupportsDate)
  3498. Assert.Ignore ("Date test does not apply to the current driver (" + conn.Driver + ").");
  3499. DateTime date = new DateTime (9999, 12, 31);
  3500. cmd = conn.CreateCommand ();
  3501. cmd.CommandText = select_data;
  3502. param = cmd.Parameters.Add ("type_date", OdbcType.DateTime);
  3503. param.Value = date;
  3504. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3505. param.Value = 1;
  3506. dr = cmd.ExecuteReader ();
  3507. Assert.IsTrue (dr.Read (), "#A1");
  3508. Assert.AreEqual (typeof (DateTime), dr.GetFieldType (0), "#A2");
  3509. Assert.AreEqual (date, dr.GetValue (0), "#A3");
  3510. Assert.IsFalse (dr.Read (), "#A4");
  3511. dr.Close ();
  3512. cmd.Dispose ();
  3513. cmd = conn.CreateCommand ();
  3514. cmd.CommandText = select_by_id;
  3515. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3516. param.Value = 4;
  3517. dr = cmd.ExecuteReader ();
  3518. Assert.IsTrue (dr.Read (), "#B1");
  3519. Assert.AreEqual (typeof (DateTime), dr.GetFieldType (0), "#B2");
  3520. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#B3");
  3521. Assert.IsFalse (dr.Read (), "#B4");
  3522. dr.Close ();
  3523. cmd.Dispose ();
  3524. date = new DateTime (2004, 2, 21, 4, 50, 7);
  3525. cmd = conn.CreateCommand ();
  3526. cmd.CommandText = insert_data;
  3527. param = cmd.Parameters.Add ("type_date", OdbcType.Date);
  3528. param.Value = date;
  3529. cmd.ExecuteNonQuery ();
  3530. cmd.Dispose ();
  3531. cmd = conn.CreateCommand ();
  3532. cmd.CommandText = select_by_id;
  3533. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3534. param.Value = 6000;
  3535. dr = cmd.ExecuteReader ();
  3536. Assert.IsTrue (dr.Read (), "#C1");
  3537. Assert.AreEqual (typeof (DateTime), dr.GetFieldType (0), "#C2");
  3538. Assert.AreEqual (new DateTime (2004, 2, 21), dr.GetValue (0), "#C3");
  3539. Assert.IsFalse (dr.Read (), "#C4");
  3540. dr.Close ();
  3541. cmd.Dispose ();
  3542. DBHelper.ExecuteNonQuery (conn, delete_data);
  3543. cmd = conn.CreateCommand ();
  3544. cmd.CommandText = insert_data;
  3545. param = cmd.Parameters.Add ("type_date", OdbcType.Date);
  3546. param.Value = DBNull.Value;
  3547. cmd.ExecuteNonQuery ();
  3548. cmd.Dispose ();
  3549. cmd = conn.CreateCommand ();
  3550. cmd.CommandText = select_by_id;
  3551. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3552. param.Value = 6000;
  3553. dr = cmd.ExecuteReader ();
  3554. Assert.IsTrue (dr.Read (), "#D1");
  3555. Assert.AreEqual (typeof (DateTime), dr.GetFieldType (0), "#D2");
  3556. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
  3557. Assert.IsFalse (dr.Read (), "#D4");
  3558. dr.Close ();
  3559. cmd.Dispose ();
  3560. } finally {
  3561. if (dr != null)
  3562. dr.Close ();
  3563. if (cmd != null)
  3564. cmd.Dispose ();
  3565. conn.Close ();
  3566. conn.Open ();
  3567. DBHelper.ExecuteNonQuery (conn, delete_data);
  3568. conn.Close ();
  3569. }
  3570. }
  3571. [Test]
  3572. public void TimeParameterTest ()
  3573. {
  3574. string insert_data = "insert into datetime_family (id, type_time) values (6000, ?)";
  3575. string select_data = "select type_time from datetime_family where type_time = ? and id = 1";
  3576. string select_by_id = "select type_time from datetime_family where id = ?";
  3577. string delete_data = "delete from datetime_family where id = 6000";
  3578. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  3579. IDataReader dr = null;
  3580. OdbcCommand cmd = null;
  3581. OdbcParameter param;
  3582. try {
  3583. if (!ConnectionManager.Instance.Odbc.EngineConfig.SupportsTime)
  3584. Assert.Ignore ("Time test does not apply to the current driver (" + conn.Driver + ").");
  3585. TimeSpan time = ConnectionManager.Instance.Odbc.EngineConfig.SupportsMicroseconds ?
  3586. new TimeSpan (23, 58, 59, 953) : new TimeSpan (23, 58, 59);
  3587. cmd = conn.CreateCommand ();
  3588. cmd.CommandText = select_data;
  3589. param = cmd.Parameters.Add ("type_time", OdbcType.Time);
  3590. param.Value = time;
  3591. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3592. param.Value = 1;
  3593. dr = cmd.ExecuteReader ();
  3594. Assert.IsTrue (dr.Read (), "#A1");
  3595. Assert.AreEqual (typeof (TimeSpan), dr.GetFieldType (0), "#A2");
  3596. Assert.AreEqual (time, dr.GetValue (0), "#A3");
  3597. Assert.IsFalse (dr.Read (), "#A4");
  3598. dr.Close ();
  3599. cmd.Dispose ();
  3600. cmd = conn.CreateCommand ();
  3601. cmd.CommandText = select_by_id;
  3602. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3603. param.Value = 4;
  3604. dr = cmd.ExecuteReader ();
  3605. Assert.IsTrue (dr.Read (), "#B1");
  3606. Assert.AreEqual (typeof (TimeSpan), dr.GetFieldType (0), "#B2");
  3607. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#B3");
  3608. Assert.IsFalse (dr.Read (), "#B4");
  3609. dr.Close ();
  3610. cmd.Dispose ();
  3611. time = new TimeSpan (23, 56, 43);
  3612. cmd = conn.CreateCommand ();
  3613. cmd.CommandText = insert_data;
  3614. param = cmd.Parameters.Add ("type_time", OdbcType.Time);
  3615. param.Value = time;
  3616. cmd.ExecuteNonQuery ();
  3617. cmd.Dispose ();
  3618. cmd = conn.CreateCommand ();
  3619. cmd.CommandText = select_by_id;
  3620. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3621. param.Value = 6000;
  3622. dr = cmd.ExecuteReader ();
  3623. Assert.IsTrue (dr.Read (), "#C1");
  3624. Assert.AreEqual (typeof (TimeSpan), dr.GetFieldType (0), "#C2");
  3625. Assert.AreEqual (time, dr.GetValue (0), "#C3");
  3626. Assert.IsFalse (dr.Read (), "#C4");
  3627. dr.Close ();
  3628. cmd.Dispose ();
  3629. DBHelper.ExecuteNonQuery (conn, delete_data);
  3630. cmd = conn.CreateCommand ();
  3631. cmd.CommandText = insert_data;
  3632. param = cmd.Parameters.Add ("type_time", OdbcType.Date);
  3633. param.Value = DBNull.Value;
  3634. cmd.ExecuteNonQuery ();
  3635. cmd.Dispose ();
  3636. cmd = conn.CreateCommand ();
  3637. cmd.CommandText = select_by_id;
  3638. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3639. param.Value = 6000;
  3640. dr = cmd.ExecuteReader ();
  3641. Assert.IsTrue (dr.Read (), "#D1");
  3642. Assert.AreEqual (typeof (TimeSpan), dr.GetFieldType (0), "#D2");
  3643. Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
  3644. Assert.IsFalse (dr.Read (), "#D4");
  3645. dr.Close ();
  3646. cmd.Dispose ();
  3647. } finally {
  3648. if (dr != null)
  3649. dr.Close ();
  3650. if (cmd != null)
  3651. cmd.Dispose ();
  3652. conn.Close ();
  3653. conn.Open ();
  3654. DBHelper.ExecuteNonQuery (conn, delete_data);
  3655. conn.Close ();
  3656. }
  3657. }
  3658. [Test]
  3659. public void UniqueIdentifierParameterTest ()
  3660. {
  3661. string insert_data = "insert into string_family (id, type_guid) values (6000, ?)";
  3662. string select_data = "select id, type_guid from string_family where type_guid = ? and id = ?";
  3663. string select_by_id = "select id, type_guid from string_family where id = ?";
  3664. string delete_data = "delete from string_family where id = 6000";
  3665. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  3666. IDataReader dr = null;
  3667. OdbcCommand cmd = null;
  3668. OdbcParameter param;
  3669. try {
  3670. if (!ConnectionManager.Instance.Odbc.EngineConfig.SupportsUniqueIdentifier)
  3671. Assert.Ignore ("UniqueIdentifier test does not apply to the current driver (" + conn.Driver + ").");
  3672. cmd = conn.CreateCommand ();
  3673. cmd.CommandText = select_data;
  3674. param = cmd.Parameters.Add ("type_guid", OdbcType.UniqueIdentifier);
  3675. param.Value = new Guid ("d222a130-6383-4d36-ac5e-4e6b2591aabf");
  3676. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3677. param.Value = 1;
  3678. dr = cmd.ExecuteReader ();
  3679. Assert.IsTrue (dr.Read (), "#A1");
  3680. Assert.AreEqual (1, dr.GetValue (0), "#A2");
  3681. Assert.AreEqual (new Guid ("d222a130-6383-4d36-ac5e-4e6b2591aabf"), dr.GetValue (1), "#A3");
  3682. Assert.IsFalse (dr.Read (), "#A4");
  3683. dr.Close ();
  3684. cmd.Dispose ();
  3685. cmd = conn.CreateCommand ();
  3686. cmd.CommandText = select_by_id;
  3687. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3688. param.Value = 4;
  3689. dr = cmd.ExecuteReader ();
  3690. Assert.IsTrue (dr.Read (), "#B1");
  3691. Assert.AreEqual (4, dr.GetValue (0), "#B2");
  3692. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#B3");
  3693. Assert.IsFalse (dr.Read (), "#B4");
  3694. dr.Close ();
  3695. cmd.Dispose ();
  3696. cmd = (OdbcCommand) conn.CreateCommand ();
  3697. cmd.CommandText = insert_data;
  3698. param = cmd.Parameters.Add ("type_guid", OdbcType.UniqueIdentifier);
  3699. param.Value = new Guid ("e222a130-6383-4d36-ac5e-4e6b2591aabe");
  3700. cmd.ExecuteNonQuery ();
  3701. cmd.Dispose ();
  3702. cmd = conn.CreateCommand ();
  3703. cmd.CommandText = select_data;
  3704. param = cmd.Parameters.Add ("type_guid", OdbcType.UniqueIdentifier);
  3705. param.Value = new Guid ("e222a130-6383-4d36-ac5e-4e6b2591aabe");
  3706. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3707. param.Value = 6000;
  3708. dr = cmd.ExecuteReader ();
  3709. Assert.IsTrue (dr.Read (), "#C1");
  3710. Assert.AreEqual (6000, dr.GetValue (0), "#C2");
  3711. Assert.AreEqual (new Guid ("e222a130-6383-4d36-ac5e-4e6b2591aabe"), dr.GetValue (1), "#C3");
  3712. Assert.IsFalse (dr.Read (), "#C4");
  3713. dr.Close ();
  3714. cmd.Dispose ();
  3715. DBHelper.ExecuteNonQuery (conn, delete_data);
  3716. cmd = (OdbcCommand) conn.CreateCommand ();
  3717. cmd.CommandText = insert_data;
  3718. param = cmd.Parameters.Add ("type_guid", OdbcType.UniqueIdentifier);
  3719. param.Value = DBNull.Value;
  3720. cmd.ExecuteNonQuery ();
  3721. cmd.Dispose ();
  3722. cmd = conn.CreateCommand ();
  3723. cmd.CommandText = select_by_id;
  3724. param = cmd.Parameters.Add ("id", OdbcType.Int);
  3725. param.Value = 6000;
  3726. dr = cmd.ExecuteReader ();
  3727. Assert.IsTrue (dr.Read (), "#D1");
  3728. Assert.AreEqual (6000, dr.GetValue (0), "#D2");
  3729. Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D3");
  3730. Assert.IsFalse (dr.Read (), "#D4");
  3731. dr.Close ();
  3732. cmd.Dispose ();
  3733. } finally {
  3734. if (dr != null)
  3735. dr.Close ();
  3736. if (cmd != null)
  3737. cmd.Dispose ();
  3738. conn.Close ();
  3739. conn.Open ();
  3740. DBHelper.ExecuteNonQuery (conn, delete_data);
  3741. conn.Close ();
  3742. }
  3743. }
  3744. [Test]
  3745. public void DBNullParameterTest()
  3746. {
  3747. OdbcConnection conn = ConnectionManager.Instance.Odbc.Connection;
  3748. try
  3749. {
  3750. OdbcDataAdapter Adaptador = new OdbcDataAdapter ();
  3751. DataSet Lector = new DataSet ();
  3752. Adaptador.SelectCommand = new OdbcCommand ("SELECT ?;", (OdbcConnection) conn);
  3753. Adaptador.SelectCommand.Parameters.AddWithValue("@un", DBNull.Value);
  3754. Adaptador.Fill (Lector);
  3755. Assert.AreEqual (Lector.Tables[0].Rows[0][0], DBNull.Value, "#1 DBNull parameter not passed correctly");
  3756. } finally {
  3757. ConnectionManager.Instance.Odbc.CloseConnection ();
  3758. }
  3759. }
  3760. [Test]
  3761. public void ParameterName ()
  3762. {
  3763. OdbcParameter p = new OdbcParameter ();
  3764. p.ParameterName = "foo1";
  3765. Assert.AreEqual ("foo1", p.ParameterName, "#1");
  3766. p.ParameterName = null;
  3767. Assert.AreEqual (string.Empty, p.ParameterName, "#2");
  3768. p.ParameterName = "foo2";
  3769. Assert.AreEqual ("foo2", p.ParameterName, "#3");
  3770. p.ParameterName = string.Empty;
  3771. Assert.AreEqual (string.Empty, p.ParameterName, "#4");
  3772. }
  3773. [Test]
  3774. public void SourceColumn ()
  3775. {
  3776. OdbcParameter p = new OdbcParameter ();
  3777. p.SourceColumn = "foo1";
  3778. Assert.AreEqual ("foo1", p.SourceColumn, "#1");
  3779. p.SourceColumn = null;
  3780. Assert.AreEqual (string.Empty, p.SourceColumn, "#2");
  3781. p.SourceColumn = "foo2";
  3782. Assert.AreEqual ("foo2", p.SourceColumn, "#3");
  3783. p.SourceColumn = string.Empty;
  3784. Assert.AreEqual (string.Empty, p.SourceColumn, "#4");
  3785. }
  3786. [Test]
  3787. public void DefaultValuesTest ()
  3788. {
  3789. OdbcParameter p;
  3790. p = new OdbcParameter();
  3791. Assert.AreEqual (DbType.String, p.DbType, "#A:DbType");
  3792. Assert.AreEqual (ParameterDirection.Input, p.Direction, "#A:Direction");
  3793. Assert.IsFalse (p.IsNullable, "#A:IsNullable");
  3794. Assert.AreEqual (OdbcType.NVarChar, p.OdbcType, "#A:OdbcType");
  3795. Assert.AreEqual (String.Empty, p.ParameterName, "#A:ParameterName");
  3796. Assert.AreEqual (0, p.Precision, "#A:Precision");
  3797. Assert.AreEqual (0, p.Scale, "#A:Scale");
  3798. Assert.AreEqual (0, p.Size, "#A:Size");
  3799. Assert.AreEqual (String.Empty, p.SourceColumn, "#A:SourceColumn");
  3800. Assert.IsFalse (p.SourceColumnNullMapping, "#A:SourceColumnNullMapping");
  3801. Assert.AreEqual (DataRowVersion.Current, p.SourceVersion, "#A:SourceVersion");
  3802. Assert.IsNull (p.Value, "#A:Value");
  3803. p = new OdbcParameter(null, 2);
  3804. Assert.AreEqual (DbType.String, p.DbType, "#B:DbType");
  3805. Assert.AreEqual (ParameterDirection.Input, p.Direction, "#B:Direction");
  3806. Assert.IsFalse (p.IsNullable, "#B:IsNullable");
  3807. Assert.AreEqual (OdbcType.NVarChar, p.OdbcType, "#B:OdbcType");
  3808. Assert.AreEqual (String.Empty, p.ParameterName, "#B:ParameterName");
  3809. Assert.AreEqual (0, p.Precision, "#B:Precision");
  3810. Assert.AreEqual (0, p.Scale, "#B:Scale");
  3811. Assert.AreEqual (0, p.Size, "#B:Size");
  3812. Assert.AreEqual (String.Empty, p.SourceColumn, "#B:SourceColumn");
  3813. Assert.IsFalse (p.SourceColumnNullMapping, "#B:SourceColumnNullMapping");
  3814. Assert.AreEqual (DataRowVersion.Current, p.SourceVersion, "#B:SourceVersion");
  3815. Assert.AreEqual (2, p.Value, "#B:Value");
  3816. p = new OdbcParameter("foo", 2);
  3817. Assert.AreEqual (DbType.String, p.DbType, "#C:DbType");
  3818. Assert.AreEqual (ParameterDirection.Input, p.Direction, "#C:Direction");
  3819. Assert.IsFalse (p.IsNullable, "#C:IsNullable");
  3820. Assert.AreEqual (OdbcType.NVarChar, p.OdbcType, "#C:OdbcType");
  3821. Assert.AreEqual ("foo", p.ParameterName, "#C:ParameterName");
  3822. Assert.AreEqual (0, p.Precision, "#C:Precision");
  3823. Assert.AreEqual (0, p.Scale, "#C:Scale");
  3824. Assert.AreEqual (0, p.Size, "#C:Size");
  3825. Assert.AreEqual (String.Empty, p.SourceColumn, "#C:SourceColumn");
  3826. Assert.IsFalse (p.SourceColumnNullMapping, "#C:SourceColumnNullMapping");
  3827. Assert.AreEqual (DataRowVersion.Current, p.SourceVersion, "#C:SourceVersion");
  3828. Assert.AreEqual (2, p.Value, "#C:Value");
  3829. p = new OdbcParameter("foo1", OdbcType.Int);
  3830. Assert.AreEqual (DbType.Int32, p.DbType, "#D:DbType");
  3831. Assert.AreEqual (ParameterDirection.Input, p.Direction, "#D:Direction");
  3832. Assert.IsFalse (p.IsNullable, "#D:IsNullable");
  3833. Assert.AreEqual (OdbcType.Int, p.OdbcType, "#D:OdbcType");
  3834. Assert.AreEqual ("foo1", p.ParameterName, "#D:ParameterName");
  3835. Assert.AreEqual (0, p.Precision, "#D:Precision");
  3836. Assert.AreEqual (0, p.Scale, "#D:Scale");
  3837. Assert.AreEqual (0, p.Size, "#D:Size");
  3838. Assert.AreEqual (String.Empty, p.SourceColumn, "#D:SourceColumn");
  3839. Assert.IsFalse (p.SourceColumnNullMapping, "#D:SourceColumnNullMapping");
  3840. Assert.AreEqual (DataRowVersion.Current, p.SourceVersion, "#D:SourceVersion");
  3841. Assert.IsNull (p.Value, "#D:Value");
  3842. }
  3843. }
  3844. }