1 // OdbcCommandTest.cs - NUnit Test Cases for testing the
5 // Sureshkumar T (TSureshkumar@novell.com)
6 // Gert Driesen (drieseng@users.sourceforge.net)
8 // Copyright (c) 2005-2008 Novell Inc., and the individuals listed
9 // on the ChangeLog entries.
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:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
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.
33 using System.Data.Common;
34 using System.Data.Odbc;
35 using System.Globalization;
37 using System.Threading;
41 using NUnit.Framework;
43 namespace MonoTests.System.Data
47 public class OdbcParameterTest
49 private CultureInfo _originalCulture;
54 _originalCulture = Thread.CurrentThread.CurrentCulture;
55 Thread.CurrentThread.CurrentCulture = new CultureInfo ("nl-BE");
59 public void TearDown ()
61 Thread.CurrentThread.CurrentCulture = _originalCulture;
65 public void IntegerParamTest ()
67 string insert_data = "insert into numeric_family (id, type_int) values (6000, ?)";
68 string select_data = "select id, type_int from numeric_family where type_int = ? and id = ?";
69 string select_by_id = "select id, type_int from numeric_family where id = ?";
70 string delete_data = "delete from numeric_family where id = 6000";
72 IDbConnection conn = ConnectionManager.Singleton.Connection;
75 IDataReader dr = null;
76 OdbcCommand cmd = null;
80 cmd = (OdbcCommand) conn.CreateCommand ();
81 cmd.CommandText = select_data;
82 param = cmd.Parameters.Add ("type_int", OdbcType.Int);
83 param.Value = int.MaxValue;
84 param = cmd.Parameters.Add ("id", OdbcType.Int);
86 dr = cmd.ExecuteReader ();
87 Assert.IsTrue (dr.Read (), "#A1");
88 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
89 Assert.AreEqual (1, dr.GetValue (0), "#A2");
90 Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#A3");
91 Assert.AreEqual (int.MaxValue, dr.GetValue (1), "#A4");
92 Assert.IsFalse (dr.Read (), "#A5");
96 cmd = (OdbcCommand) conn.CreateCommand ();
97 cmd.CommandText = select_data;
98 param = cmd.Parameters.Add ("type_int", OdbcType.Int);
99 param.Value = int.MinValue;
100 param = cmd.Parameters.Add ("id", OdbcType.Int);
102 dr = cmd.ExecuteReader ();
103 Assert.IsTrue (dr.Read (), "#B1");
104 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
105 Assert.AreEqual (2, dr.GetValue (0), "#B2");
106 Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#B3");
107 Assert.AreEqual (int.MinValue, dr.GetValue (1), "#B4");
108 Assert.IsFalse (dr.Read (), "#B5");
112 cmd = (OdbcCommand) conn.CreateCommand ();
113 cmd.CommandText = select_data;
114 param = cmd.Parameters.Add ("type_int", OdbcType.Int);
116 param = cmd.Parameters.Add ("id", OdbcType.Int);
118 dr = cmd.ExecuteReader ();
119 Assert.IsTrue (dr.Read (), "#C1");
120 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
121 Assert.AreEqual (3, dr.GetValue (0), "#C2");
122 Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#C3");
123 Assert.AreEqual (0, dr.GetValue (1), "#C4");
124 Assert.IsFalse (dr.Read (), "#C5");
128 cmd = (OdbcCommand) conn.CreateCommand ();
129 cmd.CommandText = select_by_id;
130 param = cmd.Parameters.Add ("id", OdbcType.Int);
132 dr = cmd.ExecuteReader ();
133 Assert.IsTrue (dr.Read (), "#D1");
134 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
135 Assert.AreEqual (4, dr.GetValue (0), "#D3");
136 Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#D4");
137 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
138 Assert.IsFalse (dr.Read (), "#D6");
142 cmd = (OdbcCommand) conn.CreateCommand ();
143 cmd.CommandText = insert_data;
144 param = cmd.Parameters.Add ("type_int", OdbcType.Int);
145 param.Value = int.MaxValue;
146 cmd.ExecuteNonQuery ();
149 cmd = (OdbcCommand) conn.CreateCommand ();
150 cmd.CommandText = select_by_id;
151 param = cmd.Parameters.Add ("id", OdbcType.Int);
153 dr = cmd.ExecuteReader ();
154 Assert.IsTrue (dr.Read (), "#E1");
155 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
156 Assert.AreEqual (6000, dr.GetValue (0), "#E3");
157 Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#E4");
158 Assert.AreEqual (int.MaxValue, dr.GetValue (1), "#E5");
159 Assert.IsFalse (dr.Read (), "#E6");
163 DBHelper.ExecuteNonQuery (conn, delete_data);
165 cmd = (OdbcCommand) conn.CreateCommand ();
166 cmd.CommandText = insert_data;
167 param = cmd.Parameters.Add ("type_int", OdbcType.Int);
168 param.Value = int.MinValue;
169 cmd.ExecuteNonQuery ();
172 cmd = (OdbcCommand) conn.CreateCommand ();
173 cmd.CommandText = select_by_id;
174 param = cmd.Parameters.Add ("id", OdbcType.Int);
176 dr = cmd.ExecuteReader ();
177 Assert.IsTrue (dr.Read (), "#F1");
178 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
179 Assert.AreEqual (6000, dr.GetValue (0), "#F3");
180 Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#F4");
181 Assert.AreEqual (int.MinValue, dr.GetValue (1), "#F5");
182 Assert.IsFalse (dr.Read (), "#F6");
186 DBHelper.ExecuteNonQuery (conn, delete_data);
188 cmd = (OdbcCommand) conn.CreateCommand ();
189 cmd.CommandText = insert_data;
190 param = cmd.Parameters.Add ("type_int", OdbcType.Int);
192 cmd.ExecuteNonQuery ();
195 cmd = (OdbcCommand) conn.CreateCommand ();
196 cmd.CommandText = select_by_id;
197 param = cmd.Parameters.Add ("id", OdbcType.Int);
199 dr = cmd.ExecuteReader ();
200 Assert.IsTrue (dr.Read (), "#G1");
201 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
202 Assert.AreEqual (6000, dr.GetValue (0), "#G3");
203 Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#G4");
204 Assert.AreEqual (0, dr.GetValue (1), "#G5");
205 Assert.IsFalse (dr.Read (), "#G6");
209 DBHelper.ExecuteNonQuery (conn, delete_data);
211 cmd = (OdbcCommand) conn.CreateCommand ();
212 cmd.CommandText = insert_data;
213 param = cmd.Parameters.Add ("type_int", OdbcType.Int);
214 param.Value = DBNull.Value;
215 cmd.ExecuteNonQuery ();
218 cmd = (OdbcCommand) conn.CreateCommand ();
219 cmd.CommandText = select_by_id;
220 param = cmd.Parameters.Add ("id", OdbcType.Int);
222 dr = cmd.ExecuteReader ();
223 Assert.IsTrue (dr.Read (), "#H1");
224 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
225 Assert.AreEqual (6000, dr.GetValue (0), "#H3");
226 Assert.AreEqual (typeof (int), dr.GetFieldType (1), "#H4");
227 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#H5");
228 Assert.IsFalse (dr.Read (), "#H6");
238 DBHelper.ExecuteNonQuery (conn, delete_data);
244 public void BigIntParamTest ()
246 string insert_data = "insert into numeric_family (id, type_bigint) values (6000, ?)";
247 string select_data = "select id, type_bigint from numeric_family where type_bigint = ? and id = ?";
248 string select_by_id = "select id, type_bigint from numeric_family where id = ?";
249 string delete_data = "delete from numeric_family where id = 6000";
251 IDbConnection conn = ConnectionManager.Singleton.Connection;
254 IDataReader dr = null;
255 OdbcCommand cmd = null;
259 cmd = (OdbcCommand) conn.CreateCommand ();
260 cmd.CommandText = select_data;
261 param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
262 param.Value = 9223372036854775807L;
263 param = cmd.Parameters.Add ("id", OdbcType.Int);
265 dr = cmd.ExecuteReader ();
266 Assert.IsTrue (dr.Read (), "#A1");
267 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
268 Assert.AreEqual (1, dr.GetValue (0), "#A3");
269 Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#A4");
270 Assert.AreEqual (9223372036854775807L, dr.GetValue (1), "#A5");
271 Assert.IsFalse (dr.Read (), "#A6");
275 cmd = (OdbcCommand) conn.CreateCommand ();
276 cmd.CommandText = select_data;
277 param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
278 param.Value = -9223372036854775808L;
279 param = cmd.Parameters.Add ("id", OdbcType.Int);
281 dr = cmd.ExecuteReader ();
282 Assert.IsTrue (dr.Read (), "#A1");
283 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
284 Assert.AreEqual (2, dr.GetValue (0), "#B3");
285 Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#B4");
286 Assert.AreEqual (-9223372036854775808L, dr.GetValue (1), "#B5");
287 Assert.IsFalse (dr.Read (), "#B6");
291 cmd = (OdbcCommand) conn.CreateCommand ();
292 cmd.CommandText = select_data;
293 param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
295 param = cmd.Parameters.Add ("id", OdbcType.Int);
297 dr = cmd.ExecuteReader ();
298 Assert.IsTrue (dr.Read (), "#C1");
299 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
300 Assert.AreEqual (3, dr.GetValue (0), "#C3");
301 Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#C4");
302 Assert.AreEqual (0L, dr.GetValue (1), "#C5");
303 Assert.IsFalse (dr.Read (), "#C6");
307 cmd = (OdbcCommand) conn.CreateCommand ();
308 cmd.CommandText = select_by_id;
309 param = cmd.Parameters.Add ("id", OdbcType.Int);
311 dr = cmd.ExecuteReader ();
312 Assert.IsTrue (dr.Read (), "#D1");
313 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
314 Assert.AreEqual (4, dr.GetValue (0), "#D3");
315 Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#D4");
316 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
317 Assert.IsFalse (dr.Read (), "#D6");
321 cmd = (OdbcCommand) conn.CreateCommand ();
322 cmd.CommandText = insert_data;
323 param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
324 param.Value = 8223372036854775805L;
325 cmd.ExecuteNonQuery ();
328 cmd = (OdbcCommand) conn.CreateCommand ();
329 cmd.CommandText = select_data;
330 param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
331 param.Value = 8223372036854775805L;
332 param = cmd.Parameters.Add ("id", OdbcType.Int);
334 dr = cmd.ExecuteReader ();
335 Assert.IsTrue (dr.Read (), "#E1");
336 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
337 Assert.AreEqual (6000, dr.GetValue (0), "#E3");
338 Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#E4");
339 Assert.AreEqual (8223372036854775805L, dr.GetValue (1), "#E5");
340 Assert.IsFalse (dr.Read (), "#E6");
344 DBHelper.ExecuteNonQuery (conn, delete_data);
346 cmd = (OdbcCommand) conn.CreateCommand ();
347 cmd.CommandText = insert_data;
348 param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
349 param.Value = -8223372036854775805L;
350 cmd.ExecuteNonQuery ();
353 cmd = (OdbcCommand) conn.CreateCommand ();
354 cmd.CommandText = select_data;
355 param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
356 param.Value = -8223372036854775805L;
357 param = cmd.Parameters.Add ("id", OdbcType.Int);
359 dr = cmd.ExecuteReader ();
360 Assert.IsTrue (dr.Read (), "#F1");
361 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
362 Assert.AreEqual (6000, dr.GetValue (0), "#F3");
363 Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#F4");
364 Assert.AreEqual (-8223372036854775805L, dr.GetValue (1), "#F5");
365 Assert.IsFalse (dr.Read (), "#F6");
369 DBHelper.ExecuteNonQuery (conn, delete_data);
371 cmd = (OdbcCommand) conn.CreateCommand ();
372 cmd.CommandText = insert_data;
373 param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
375 cmd.ExecuteNonQuery ();
378 cmd = (OdbcCommand) conn.CreateCommand ();
379 cmd.CommandText = select_data;
380 param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
382 param = cmd.Parameters.Add ("id", OdbcType.Int);
384 dr = cmd.ExecuteReader ();
385 Assert.IsTrue (dr.Read (), "#G1");
386 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
387 Assert.AreEqual (6000, dr.GetValue (0), "#G3");
388 Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#G4");
389 Assert.AreEqual (0L, dr.GetValue (1), "#G5");
390 Assert.IsFalse (dr.Read (), "#G6");
394 DBHelper.ExecuteNonQuery (conn, delete_data);
396 cmd = (OdbcCommand) conn.CreateCommand ();
397 cmd.CommandText = insert_data;
398 param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
399 param.Value = DBNull.Value;
400 cmd.ExecuteNonQuery ();
403 cmd = (OdbcCommand) conn.CreateCommand ();
404 cmd.CommandText = select_by_id;
405 param = cmd.Parameters.Add ("id", OdbcType.Int);
407 dr = cmd.ExecuteReader ();
408 Assert.IsTrue (dr.Read (), "#H1");
409 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
410 Assert.AreEqual (6000, dr.GetValue (0), "#H3");
411 Assert.AreEqual (typeof (long), dr.GetFieldType (1), "#H4");
412 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#H5");
413 Assert.IsFalse (dr.Read (), "#H6");
423 DBHelper.ExecuteNonQuery (conn, delete_data);
429 public void BinaryParameterTest ()
431 string insert_data = "insert into binary_family (id, type_binary) values (6000, ?)";
432 string select_data = "select id, type_binary from binary_family where type_binary = ? and id = ?";
433 string select_by_id = "select id, type_binary from binary_family where id = ?";
434 string delete_data = "delete from binary_family where id = 6000";
436 OdbcConnection conn = (OdbcConnection) ConnectionManager.Singleton.Connection;
439 IDataReader dr = null;
440 OdbcCommand cmd = null;
444 byte [] bytes = new byte [] { 0x35, 0x00, 0x00,
445 0x00, 0x00, 0x00, 0x00, 0x00 };
447 cmd = conn.CreateCommand ();
448 cmd.CommandText = select_data;
449 param = cmd.Parameters.Add ("type_binary", OdbcType.Binary);
451 param = cmd.Parameters.Add ("id", OdbcType.Int);
453 dr = cmd.ExecuteReader ();
454 Assert.IsTrue (dr.Read (), "#A1");
455 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
456 Assert.AreEqual (1, dr.GetValue (0), "#A3");
457 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#A4");
458 Assert.AreEqual (bytes, dr.GetValue (1), "#A5");
459 Assert.IsFalse (dr.Read (), "#A6");
463 bytes = new byte [] { 0x00, 0x33, 0x34, 0x00,
464 0x33, 0x30, 0x35, 0x31 };
466 cmd = conn.CreateCommand ();
467 cmd.CommandText = select_data;
468 param = cmd.Parameters.Add ("type_binary", OdbcType.Binary);
470 param = cmd.Parameters.Add ("id", OdbcType.Int);
472 dr = cmd.ExecuteReader ();
473 Assert.IsTrue (dr.Read (), "#B1");
474 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
475 Assert.AreEqual (2, dr.GetValue (0), "#B3");
476 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#B4");
477 Assert.AreEqual (bytes, dr.GetValue (1), "#B5");
478 Assert.IsFalse (dr.Read (), "#B6");
482 bytes = new byte [8];
484 cmd = conn.CreateCommand ();
485 cmd.CommandText = select_data;
486 param = cmd.Parameters.Add ("type_binary", OdbcType.Binary);
488 param = cmd.Parameters.Add ("id", OdbcType.Int);
490 dr = cmd.ExecuteReader ();
491 Assert.IsTrue (dr.Read (), "#C1");
492 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
493 Assert.AreEqual (3, dr.GetValue (0), "#C3");
494 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#C4");
495 Assert.AreEqual (bytes, dr.GetValue (1), "#C5");
496 Assert.IsFalse (dr.Read (), "#C6");
500 cmd = conn.CreateCommand ();
501 cmd.CommandText = select_by_id;
502 param = cmd.Parameters.Add ("id", OdbcType.Int);
504 dr = cmd.ExecuteReader ();
505 Assert.IsTrue (dr.Read (), "#D1");
506 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
507 Assert.AreEqual (4, dr.GetValue (0), "#D3");
508 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#D4");
509 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
510 Assert.IsFalse (dr.Read (), "#D6");
514 bytes = new byte [0];
516 cmd = conn.CreateCommand ();
517 cmd.CommandText = insert_data;
518 param = cmd.Parameters.Add ("type_binary", OdbcType.Binary);
520 cmd.ExecuteNonQuery ();
523 cmd = conn.CreateCommand ();
524 cmd.CommandText = select_by_id;
525 param = cmd.Parameters.Add ("id", OdbcType.Int);
527 dr = cmd.ExecuteReader ();
528 Assert.IsTrue (dr.Read (), "#E1");
529 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
530 Assert.AreEqual (6000, dr.GetValue (0), "#E3");
531 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#E4");
532 Assert.AreEqual (new byte [8], dr.GetValue (1), "#E5");
533 Assert.IsFalse (dr.Read (), "#E6");
537 DBHelper.ExecuteNonQuery (conn, delete_data);
539 bytes = new byte [] { 0x05 };
541 cmd = conn.CreateCommand ();
542 cmd.CommandText = insert_data;
543 param = cmd.Parameters.Add ("type_binary", OdbcType.Binary);
545 cmd.ExecuteNonQuery ();
548 cmd = conn.CreateCommand ();
549 cmd.CommandText = select_by_id;
550 param = cmd.Parameters.Add ("id", OdbcType.Int);
552 dr = cmd.ExecuteReader ();
553 Assert.IsTrue (dr.Read (), "#F1");
554 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
555 Assert.AreEqual (6000, dr.GetValue (0), "#F3");
556 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#F4");
557 Assert.AreEqual (new byte [] { 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, dr.GetValue (1), "#F5");
558 Assert.IsFalse (dr.Read (), "#F6");
562 DBHelper.ExecuteNonQuery (conn, delete_data);
564 bytes = new byte [] { 0x34, 0x00, 0x32 };
566 cmd = conn.CreateCommand ();
567 cmd.CommandText = insert_data;
568 param = cmd.Parameters.Add ("type_binary", OdbcType.Binary);
570 cmd.ExecuteNonQuery ();
573 cmd = conn.CreateCommand ();
574 cmd.CommandText = select_by_id;
575 param = cmd.Parameters.Add ("id", OdbcType.Int);
577 dr = cmd.ExecuteReader ();
578 Assert.IsTrue (dr.Read (), "#G1");
579 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
580 Assert.AreEqual (6000, dr.GetValue (0), "#G3");
581 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#G4");
582 Assert.AreEqual (new byte [] { 0x34, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00 }, dr.GetValue (1), "#G5");
583 Assert.IsFalse (dr.Read (), "#G6");
587 DBHelper.ExecuteNonQuery (conn, delete_data);
589 bytes = new byte [] { 0x34, 0x00, 0x32, 0x05, 0x07, 0x13 };
591 cmd = conn.CreateCommand ();
592 cmd.CommandText = insert_data;
593 param = cmd.Parameters.Add ("type_binary", OdbcType.Binary, 4);
595 cmd.ExecuteNonQuery ();
598 cmd = conn.CreateCommand ();
599 cmd.CommandText = select_by_id;
600 param = cmd.Parameters.Add ("id", OdbcType.Int);
602 dr = cmd.ExecuteReader ();
603 Assert.IsTrue (dr.Read (), "#H1");
604 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
605 Assert.AreEqual (6000, dr.GetValue (0), "#H3");
606 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#H4");
607 Assert.AreEqual (new byte [] { 0x34, 0x00, 0x32, 0x05, 0x00, 0x00, 0x00, 0x00 }, dr.GetValue (1), "#H5");
608 Assert.IsFalse (dr.Read (), "#H6");
612 DBHelper.ExecuteNonQuery (conn, delete_data);
614 cmd = conn.CreateCommand ();
615 cmd.CommandText = insert_data;
616 param = cmd.Parameters.Add ("type_binary", OdbcType.Binary);
617 param.Value = DBNull.Value;
618 cmd.ExecuteNonQuery ();
621 cmd = conn.CreateCommand ();
622 cmd.CommandText = select_by_id;
623 param = cmd.Parameters.Add ("id", OdbcType.Int);
625 dr = cmd.ExecuteReader ();
626 Assert.IsTrue (dr.Read (), "#I1");
627 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#I2");
628 Assert.AreEqual (6000, dr.GetValue (0), "#I3");
629 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#I4");
630 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#I5");
631 Assert.IsFalse (dr.Read (), "#I6");
641 DBHelper.ExecuteNonQuery (conn, delete_data);
647 public void SmallIntParamTest ()
649 string insert_data = "insert into numeric_family (id, type_smallint) values (6000, ?)";
650 string select_data = "select id, type_smallint from numeric_family where type_smallint = ? and id = ?";
651 string select_by_id = "select id, type_smallint from numeric_family where id = ?";
652 string delete_data = "delete from numeric_family where id = 6000";
654 IDbConnection conn = ConnectionManager.Singleton.Connection;
657 IDataReader dr = null;
658 OdbcCommand cmd = null;
662 cmd = (OdbcCommand) conn.CreateCommand ();
663 cmd.CommandText = select_data;
664 param = cmd.Parameters.Add ("type_smallint", OdbcType.SmallInt);
665 param.Value = short.MaxValue;
666 param = cmd.Parameters.Add ("id", OdbcType.Int);
668 dr = cmd.ExecuteReader ();
669 Assert.IsTrue (dr.Read (), "#A1");
670 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
671 Assert.AreEqual (1, dr.GetValue (0), "#A2");
672 Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#A3");
673 Assert.AreEqual (short.MaxValue, dr.GetValue (1), "#A4");
674 Assert.IsFalse (dr.Read (), "#A5");
678 cmd = (OdbcCommand) conn.CreateCommand ();
679 cmd.CommandText = select_data;
680 param = cmd.Parameters.Add ("type_smallint", OdbcType.SmallInt);
681 param.Value = short.MinValue;
682 param = cmd.Parameters.Add ("id", OdbcType.Int);
684 dr = cmd.ExecuteReader ();
685 Assert.IsTrue (dr.Read (), "#B1");
686 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
687 Assert.AreEqual (2, dr.GetValue (0), "#B2");
688 Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#B3");
689 Assert.AreEqual (short.MinValue, dr.GetValue (1), "#B4");
690 Assert.IsFalse (dr.Read (), "#B5");
694 cmd = (OdbcCommand) conn.CreateCommand ();
695 cmd.CommandText = select_data;
696 param = cmd.Parameters.Add ("type_smallint", OdbcType.SmallInt);
697 param.Value = (short) 0;
698 param = cmd.Parameters.Add ("id", OdbcType.Int);
700 dr = cmd.ExecuteReader ();
701 Assert.IsTrue (dr.Read (), "#C1");
702 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
703 Assert.AreEqual (3, dr.GetValue (0), "#C2");
704 Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#C3");
705 Assert.AreEqual (0, dr.GetValue (1), "#C4");
706 Assert.IsFalse (dr.Read (), "#C5");
710 cmd = (OdbcCommand) conn.CreateCommand ();
711 cmd.CommandText = select_by_id;
712 param = cmd.Parameters.Add ("id", OdbcType.Int);
714 dr = cmd.ExecuteReader ();
715 Assert.IsTrue (dr.Read (), "#D1");
716 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
717 Assert.AreEqual (4, dr.GetValue (0), "#D3");
718 Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#D4");
719 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
720 Assert.IsFalse (dr.Read (), "#D6");
724 cmd = (OdbcCommand) conn.CreateCommand ();
725 cmd.CommandText = insert_data;
726 param = cmd.Parameters.Add ("type_smallint", OdbcType.SmallInt);
727 param.Value = short.MaxValue;
728 cmd.ExecuteNonQuery ();
731 cmd = (OdbcCommand) conn.CreateCommand ();
732 cmd.CommandText = select_by_id;
733 param = cmd.Parameters.Add ("id", OdbcType.Int);
735 dr = cmd.ExecuteReader ();
736 Assert.IsTrue (dr.Read (), "#E1");
737 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
738 Assert.AreEqual (6000, dr.GetValue (0), "#E3");
739 Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#E4");
740 Assert.AreEqual (short.MaxValue, dr.GetValue (1), "#E5");
741 Assert.IsFalse (dr.Read (), "#E6");
745 DBHelper.ExecuteNonQuery (conn, delete_data);
747 cmd = (OdbcCommand) conn.CreateCommand ();
748 cmd.CommandText = insert_data;
749 param = cmd.Parameters.Add ("type_smallint", OdbcType.SmallInt);
750 param.Value = short.MinValue;
751 cmd.ExecuteNonQuery ();
754 cmd = (OdbcCommand) conn.CreateCommand ();
755 cmd.CommandText = select_by_id;
756 param = cmd.Parameters.Add ("id", OdbcType.Int);
758 dr = cmd.ExecuteReader ();
759 Assert.IsTrue (dr.Read (), "#F1");
760 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
761 Assert.AreEqual (6000, dr.GetValue (0), "#F3");
762 Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#F4");
763 Assert.AreEqual (short.MinValue, dr.GetValue (1), "#F5");
764 Assert.IsFalse (dr.Read (), "#F6");
768 DBHelper.ExecuteNonQuery (conn, delete_data);
770 cmd = (OdbcCommand) conn.CreateCommand ();
771 cmd.CommandText = insert_data;
772 param = cmd.Parameters.Add ("type_smallint", OdbcType.SmallInt);
774 cmd.ExecuteNonQuery ();
777 cmd = (OdbcCommand) conn.CreateCommand ();
778 cmd.CommandText = select_by_id;
779 param = cmd.Parameters.Add ("id", OdbcType.Int);
781 dr = cmd.ExecuteReader ();
782 Assert.IsTrue (dr.Read (), "#G1");
783 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
784 Assert.AreEqual (6000, dr.GetValue (0), "#G3");
785 Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#G4");
786 Assert.AreEqual ((short) 0, dr.GetValue (1), "#G5");
787 Assert.IsFalse (dr.Read (), "#G6");
791 DBHelper.ExecuteNonQuery (conn, delete_data);
793 cmd = (OdbcCommand) conn.CreateCommand ();
794 cmd.CommandText = insert_data;
795 param = cmd.Parameters.Add ("type_smallint", OdbcType.SmallInt);
796 param.Value = DBNull.Value;
797 cmd.ExecuteNonQuery ();
800 cmd = (OdbcCommand) conn.CreateCommand ();
801 cmd.CommandText = select_by_id;
802 param = cmd.Parameters.Add ("id", OdbcType.Int);
804 dr = cmd.ExecuteReader ();
805 Assert.IsTrue (dr.Read (), "#H1");
806 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
807 Assert.AreEqual (6000, dr.GetValue (0), "#H3");
808 Assert.AreEqual (typeof (short), dr.GetFieldType (1), "#H4");
809 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#H5");
810 Assert.IsFalse (dr.Read (), "#H6");
820 DBHelper.ExecuteNonQuery (conn, delete_data);
826 public void TimestampParameterTest ()
828 // the value for the timestamp column is determined by
829 // the RDBMS upon insert/update and cannot be specified
832 string insert_data = "insert into binary_family (id) values (6000)";
833 string select_by_id = "select id, type_timestamp from binary_family where id = ?";
834 string delete_data = "delete from binary_family where id = 6000";
836 OdbcConnection conn = (OdbcConnection) ConnectionManager.Singleton.Connection;
839 IDataReader dr = null;
840 OdbcCommand cmd = null;
844 if (!ConnectionManager.Singleton.Engine.SupportsTimestamp)
845 Assert.Ignore ("Timestamp test does not apply to the current driver (" + conn.Driver + ").");
847 cmd = conn.CreateCommand ();
848 cmd.CommandText = insert_data;
849 cmd.ExecuteNonQuery ();
854 cmd = conn.CreateCommand ();
855 cmd.CommandText = "SELECT @@DBTS";
856 dr = cmd.ExecuteReader ();
857 Assert.IsTrue (dr.Read (), "#A1");
858 Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#A2");
859 timestamp = (byte []) dr.GetValue (0);
860 Assert.IsFalse (dr.Read (), "#A3");
864 cmd = conn.CreateCommand ();
865 cmd.CommandText = select_by_id;
866 param = cmd.Parameters.Add ("id", OdbcType.Int);
868 dr = cmd.ExecuteReader ();
869 Assert.IsTrue (dr.Read (), "#B1");
870 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
871 Assert.AreEqual (6000, dr.GetValue (0), "#B3");
872 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#B4");
873 Assert.AreEqual (timestamp, dr.GetValue (1), "#B5");
874 Assert.IsFalse (dr.Read (), "#B6");
885 DBHelper.ExecuteNonQuery (conn, delete_data);
891 public void TinyIntParamTest ()
893 string insert_data = "insert into numeric_family (id, type_tinyint) values (6000, ?)";
894 string select_data = "select id, type_tinyint from numeric_family where type_tinyint = ? and id = ?";
895 string select_by_id = "select id, type_tinyint from numeric_family where id = ?";
896 string delete_data = "delete from numeric_family where id = 6000";
898 IDbConnection conn = ConnectionManager.Singleton.Connection;
901 IDataReader dr = null;
902 OdbcCommand cmd = null;
906 cmd = (OdbcCommand) conn.CreateCommand ();
907 cmd.CommandText = select_data;
908 param = cmd.Parameters.Add ("type_tinyint", OdbcType.TinyInt);
909 param.Value = byte.MaxValue;
910 param = cmd.Parameters.Add ("id", OdbcType.Int);
912 dr = cmd.ExecuteReader ();
913 Assert.IsTrue (dr.Read (), "#A1");
914 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
915 Assert.AreEqual (1, dr.GetValue (0), "#A2");
916 Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#A3");
917 Assert.AreEqual (byte.MaxValue, dr.GetValue (1), "#A4");
918 Assert.IsFalse (dr.Read (), "#A5");
922 cmd = (OdbcCommand) conn.CreateCommand ();
923 cmd.CommandText = select_data;
924 param = cmd.Parameters.Add ("type_tinyint", OdbcType.TinyInt);
925 param.Value = byte.MinValue;
926 param = cmd.Parameters.Add ("id", OdbcType.Int);
928 dr = cmd.ExecuteReader ();
929 Assert.IsTrue (dr.Read (), "#B1");
930 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
931 Assert.AreEqual (2, dr.GetValue (0), "#B2");
932 Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#B3");
933 Assert.AreEqual (byte.MinValue, dr.GetValue (1), "#B4");
934 Assert.IsFalse (dr.Read (), "#B5");
938 cmd = (OdbcCommand) conn.CreateCommand ();
939 cmd.CommandText = select_data;
940 param = cmd.Parameters.Add ("type_tinyint", OdbcType.TinyInt);
942 param = cmd.Parameters.Add ("id", OdbcType.Int);
944 dr = cmd.ExecuteReader ();
945 Assert.IsTrue (dr.Read (), "#C1");
946 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
947 Assert.AreEqual (3, dr.GetValue (0), "#C2");
948 Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#C3");
949 Assert.AreEqual (0x00, dr.GetValue (1), "#C4");
950 Assert.IsFalse (dr.Read (), "#C5");
954 cmd = (OdbcCommand) conn.CreateCommand ();
955 cmd.CommandText = select_by_id;
956 param = cmd.Parameters.Add ("id", OdbcType.Int);
958 dr = cmd.ExecuteReader ();
959 Assert.IsTrue (dr.Read (), "#D1");
960 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
961 Assert.AreEqual (4, dr.GetValue (0), "#D3");
962 Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#D4");
963 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
964 Assert.IsFalse (dr.Read (), "#D6");
968 cmd = (OdbcCommand) conn.CreateCommand ();
969 cmd.CommandText = insert_data;
970 param = cmd.Parameters.Add ("type_tinyint", OdbcType.TinyInt);
971 param.Value = byte.MaxValue;
972 cmd.ExecuteNonQuery ();
975 cmd = (OdbcCommand) conn.CreateCommand ();
976 cmd.CommandText = select_by_id;
977 param = cmd.Parameters.Add ("id", OdbcType.Int);
979 dr = cmd.ExecuteReader ();
980 Assert.IsTrue (dr.Read (), "#E1");
981 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
982 Assert.AreEqual (6000, dr.GetValue (0), "#E3");
983 Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#E4");
984 Assert.AreEqual (byte.MaxValue, dr.GetValue (1), "#E5");
985 Assert.IsFalse (dr.Read (), "#E6");
989 DBHelper.ExecuteNonQuery (conn, delete_data);
991 cmd = (OdbcCommand) conn.CreateCommand ();
992 cmd.CommandText = insert_data;
993 param = cmd.Parameters.Add ("type_tinyint", OdbcType.TinyInt);
994 param.Value = byte.MinValue;
995 cmd.ExecuteNonQuery ();
998 cmd = (OdbcCommand) conn.CreateCommand ();
999 cmd.CommandText = select_by_id;
1000 param = cmd.Parameters.Add ("id", OdbcType.Int);
1002 dr = cmd.ExecuteReader ();
1003 Assert.IsTrue (dr.Read (), "#F1");
1004 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
1005 Assert.AreEqual (6000, dr.GetValue (0), "#F3");
1006 Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#F4");
1007 Assert.AreEqual (byte.MinValue, dr.GetValue (1), "#F5");
1008 Assert.IsFalse (dr.Read (), "#F6");
1012 DBHelper.ExecuteNonQuery (conn, delete_data);
1014 cmd = (OdbcCommand) conn.CreateCommand ();
1015 cmd.CommandText = insert_data;
1016 param = cmd.Parameters.Add ("type_tinyint", OdbcType.TinyInt);
1018 cmd.ExecuteNonQuery ();
1021 cmd = (OdbcCommand) conn.CreateCommand ();
1022 cmd.CommandText = select_by_id;
1023 param = cmd.Parameters.Add ("id", OdbcType.Int);
1025 dr = cmd.ExecuteReader ();
1026 Assert.IsTrue (dr.Read (), "#G1");
1027 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
1028 Assert.AreEqual (6000, dr.GetValue (0), "#G3");
1029 Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#G4");
1030 Assert.AreEqual (0x00, dr.GetValue (1), "#G5");
1031 Assert.IsFalse (dr.Read (), "#G6");
1035 DBHelper.ExecuteNonQuery (conn, delete_data);
1037 cmd = (OdbcCommand) conn.CreateCommand ();
1038 cmd.CommandText = insert_data;
1039 param = cmd.Parameters.Add ("type_tinyint", OdbcType.TinyInt);
1040 param.Value = DBNull.Value;
1041 cmd.ExecuteNonQuery ();
1044 cmd = (OdbcCommand) conn.CreateCommand ();
1045 cmd.CommandText = select_by_id;
1046 param = cmd.Parameters.Add ("id", OdbcType.Int);
1048 dr = cmd.ExecuteReader ();
1049 Assert.IsTrue (dr.Read (), "#H1");
1050 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
1051 Assert.AreEqual (6000, dr.GetValue (0), "#H3");
1052 Assert.AreEqual (typeof (byte), dr.GetFieldType (1), "#H4");
1053 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#H5");
1054 Assert.IsFalse (dr.Read (), "#H6");
1064 DBHelper.ExecuteNonQuery (conn, delete_data);
1070 public void StringParamTest ()
1072 string query = "select id, fname from employee where fname = ?";
1073 IDbConnection conn = ConnectionManager.Singleton.Connection;
1075 ConnectionManager.Singleton.OpenConnection ();
1076 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
1077 cmd.CommandText = query;
1079 OdbcParameter param = cmd.Parameters.Add ("fname", OdbcType.VarChar);
1080 param.Value = "suresh";
1081 OdbcDataReader dr = cmd.ExecuteReader ();
1082 Assert.IsTrue (dr.Read (), "#1 no data to test");
1083 Assert.AreEqual (1, (int) dr [0], "#2 value not matching");
1085 ConnectionManager.Singleton.CloseConnection ();
1091 public void BitParameterTest ()
1093 string insert_data = "insert into numeric_family (id, type_bit) values (6000, ?)";
1094 string select_data = "select id, type_bit from numeric_family where type_bit = ? and id = ?";
1095 string select_by_id = "select id, type_bit from numeric_family where id = ?";
1096 string delete_data = "delete from numeric_family where id = 6000";
1098 IDbConnection conn = ConnectionManager.Singleton.Connection;
1101 IDataReader dr = null;
1102 OdbcCommand cmd = null;
1103 OdbcParameter param;
1106 cmd = (OdbcCommand) conn.CreateCommand ();
1107 cmd.CommandText = select_data;
1108 param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
1110 param = cmd.Parameters.Add ("id", OdbcType.Int);
1112 dr = cmd.ExecuteReader ();
1113 Assert.IsTrue (dr.Read (), "#A1");
1114 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
1115 Assert.AreEqual (1, dr.GetValue (0), "#A2");
1116 Assert.AreEqual (typeof (bool), dr.GetFieldType (1), "#A3");
1117 Assert.AreEqual (true, dr.GetValue (1), "#A4");
1118 Assert.IsFalse (dr.Read (), "#A5");
1122 cmd = (OdbcCommand) conn.CreateCommand ();
1123 cmd.CommandText = select_data;
1124 param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
1125 param.Value = false;
1126 param = cmd.Parameters.Add ("id", OdbcType.Int);
1128 dr = cmd.ExecuteReader ();
1129 Assert.IsTrue (dr.Read (), "#B1");
1130 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
1131 Assert.AreEqual (2, dr.GetValue (0), "#B2");
1132 Assert.AreEqual (typeof (bool), dr.GetFieldType (1), "#B3");
1133 if (ConnectionManager.Singleton.Engine.Type == EngineType.MySQL)
1134 // MySQL does not support true BIT type
1135 Assert.AreEqual (true, dr.GetValue (1), "#B4");
1137 Assert.AreEqual (false, dr.GetValue (1), "#B4");
1138 Assert.IsFalse (dr.Read (), "#B5");
1142 cmd = (OdbcCommand) conn.CreateCommand ();
1143 cmd.CommandText = select_by_id;
1144 param = cmd.Parameters.Add ("id", OdbcType.Int);
1146 dr = cmd.ExecuteReader ();
1147 Assert.IsTrue (dr.Read (), "#C1");
1148 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
1149 Assert.AreEqual (4, dr.GetValue (0), "#C3");
1150 Assert.AreEqual (typeof (bool), dr.GetFieldType (1), "#C4");
1151 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#C5");
1152 Assert.IsFalse (dr.Read (), "#C6");
1156 cmd = (OdbcCommand) conn.CreateCommand ();
1157 cmd.CommandText = insert_data;
1158 param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
1160 cmd.ExecuteNonQuery ();
1163 cmd = (OdbcCommand) conn.CreateCommand ();
1164 cmd.CommandText = select_data;
1165 param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
1167 param = cmd.Parameters.Add ("id", OdbcType.Int);
1169 dr = cmd.ExecuteReader ();
1170 Assert.IsTrue (dr.Read (), "#D1");
1171 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
1172 Assert.AreEqual (6000, dr.GetValue (0), "#D3");
1173 Assert.AreEqual (typeof (bool), dr.GetFieldType (1), "#D4");
1174 Assert.AreEqual (true, dr.GetValue (1), "#D5");
1175 Assert.IsFalse (dr.Read (), "#D6");
1179 DBHelper.ExecuteNonQuery (conn, delete_data);
1181 cmd = (OdbcCommand) conn.CreateCommand ();
1182 cmd.CommandText = insert_data;
1183 param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
1184 param.Value = false;
1185 cmd.ExecuteNonQuery ();
1188 cmd = (OdbcCommand) conn.CreateCommand ();
1189 cmd.CommandText = select_data;
1190 param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
1191 param.Value = false;
1192 param = cmd.Parameters.Add ("id", OdbcType.Int);
1194 dr = cmd.ExecuteReader ();
1195 Assert.IsTrue (dr.Read (), "#E1");
1196 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
1197 Assert.AreEqual (6000, dr.GetValue (0), "#E3");
1198 Assert.AreEqual (typeof (bool), dr.GetFieldType (1), "#E4");
1199 if (ConnectionManager.Singleton.Engine.Type == EngineType.MySQL)
1200 // MySQL does not support true BIT type
1201 Assert.AreEqual (true, dr.GetValue (1), "#E5");
1203 Assert.AreEqual (false, dr.GetValue (1), "#E5");
1204 Assert.IsFalse (dr.Read (), "#E6");
1208 DBHelper.ExecuteNonQuery (conn, delete_data);
1210 cmd = (OdbcCommand) conn.CreateCommand ();
1211 cmd.CommandText = insert_data;
1212 param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
1213 param.Value = DBNull.Value;
1214 cmd.ExecuteNonQuery ();
1217 cmd = (OdbcCommand) conn.CreateCommand ();
1218 cmd.CommandText = select_by_id;
1219 param = cmd.Parameters.Add ("id", OdbcType.Int);
1221 dr = cmd.ExecuteReader ();
1222 Assert.IsTrue (dr.Read (), "#F1");
1223 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
1224 Assert.AreEqual (6000, dr.GetValue (0), "#F3");
1225 Assert.AreEqual (typeof (bool), dr.GetFieldType (1), "#F4");
1226 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#F5");
1227 Assert.IsFalse (dr.Read (), "#F6");
1237 DBHelper.ExecuteNonQuery (conn, delete_data);
1243 public void CharParameterTest ()
1245 string insert_data = "insert into string_family (id, type_char) values (6000, ?)";
1246 string select_data = "select id, type_char from string_family where type_char = ? and id = ?";
1247 string select_by_id = "select id, type_char from string_family where id = ?";
1248 string delete_data = "delete from string_family where id = 6000";
1250 OdbcConnection conn = (OdbcConnection) ConnectionManager.Singleton.Connection;
1253 IDataReader dr = null;
1254 OdbcCommand cmd = null;
1255 OdbcParameter param;
1258 cmd = conn.CreateCommand ();
1259 cmd.CommandText = select_data;
1260 param = cmd.Parameters.Add ("type_char", OdbcType.Char);
1261 param.Value = "char";
1262 param = cmd.Parameters.Add ("id", OdbcType.Int);
1264 dr = cmd.ExecuteReader ();
1265 Assert.IsTrue (dr.Read (), "#A1");
1266 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
1267 Assert.AreEqual (1, dr.GetValue (0), "#A3");
1268 Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#A4");
1269 if (ConnectionManager.Singleton.Engine.RemovesTrailingSpaces)
1270 Assert.AreEqual ("char", dr.GetValue (1), "#A5");
1272 Assert.AreEqual ("char ", dr.GetValue (1), "#A5");
1273 Assert.IsFalse (dr.Read (), "#A6");
1277 cmd = conn.CreateCommand ();
1278 cmd.CommandText = select_data;
1279 param = cmd.Parameters.Add ("type_char", OdbcType.Char);
1280 param.Value = "0123456789";
1281 param = cmd.Parameters.Add ("id", OdbcType.Int);
1283 dr = cmd.ExecuteReader ();
1284 Assert.IsTrue (dr.Read (), "#B1");
1285 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
1286 Assert.AreEqual (2, dr.GetValue (0), "#B3");
1287 Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#B4");
1288 Assert.AreEqual ("0123456789", dr.GetValue (1), "#B5");
1289 Assert.IsFalse (dr.Read (), "#B6");
1293 cmd = conn.CreateCommand ();
1294 cmd.CommandText = select_data;
1295 param = cmd.Parameters.Add ("type_char", OdbcType.Char);
1296 param.Value = string.Empty;
1297 param = cmd.Parameters.Add ("id", OdbcType.Int);
1299 dr = cmd.ExecuteReader ();
1300 Assert.IsTrue (dr.Read (), "#C1");
1301 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
1302 Assert.AreEqual (3, dr.GetValue (0), "#C3");
1303 Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#C4");
1304 if (ConnectionManager.Singleton.Engine.RemovesTrailingSpaces)
1305 Assert.AreEqual (string.Empty, dr.GetValue (1), "#C5");
1307 Assert.AreEqual (" ", dr.GetValue (1), "#C5");
1308 Assert.IsFalse (dr.Read (), "#C6");
1312 cmd = conn.CreateCommand ();
1313 cmd.CommandText = select_by_id;
1314 param = cmd.Parameters.Add ("id", OdbcType.Int);
1316 dr = cmd.ExecuteReader ();
1317 Assert.IsTrue (dr.Read (), "#D1");
1318 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
1319 Assert.AreEqual (4, dr.GetValue (0), "#D3");
1320 Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#D4");
1321 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
1322 Assert.IsFalse (dr.Read (), "#D6");
1326 cmd = conn.CreateCommand ();
1327 cmd.CommandText = insert_data;
1328 param = cmd.Parameters.Add ("type_char", OdbcType.Char, 3);
1329 param.Value = "ABCD";
1330 cmd.ExecuteNonQuery ();
1333 cmd = conn.CreateCommand ();
1334 cmd.CommandText = select_data;
1335 param = cmd.Parameters.Add ("type_char", OdbcType.Char, 3);
1336 param.Value = "ABCE ";
1337 param = cmd.Parameters.Add ("id", OdbcType.Int);
1339 dr = cmd.ExecuteReader ();
1340 Assert.IsTrue (dr.Read (), "#E1");
1341 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
1342 Assert.AreEqual (6000, dr.GetValue (0), "#E3");
1343 Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#E4");
1344 if (ConnectionManager.Singleton.Engine.RemovesTrailingSpaces)
1345 Assert.AreEqual ("ABC", dr.GetValue (1), "#E5");
1347 Assert.AreEqual ("ABC ", dr.GetValue (1), "#E5");
1348 Assert.IsFalse (dr.Read (), "#E6");
1352 DBHelper.ExecuteNonQuery (conn, delete_data);
1354 cmd = conn.CreateCommand ();
1355 cmd.CommandText = insert_data;
1356 param = cmd.Parameters.Add ("type_char", OdbcType.Char, 20);
1357 param.Value = "ABCDEFGHIJ";
1358 cmd.ExecuteNonQuery ();
1361 cmd = conn.CreateCommand ();
1362 cmd.CommandText = select_data;
1363 param = cmd.Parameters.Add ("type_char", OdbcType.Char);
1364 param.Value = "ABCDEFGHIJ";
1365 param = cmd.Parameters.Add ("id", OdbcType.Int);
1367 dr = cmd.ExecuteReader ();
1368 Assert.IsTrue (dr.Read (), "#F1");
1369 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
1370 Assert.AreEqual (6000, dr.GetValue (0), "#F3");
1371 Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#F4");
1372 Assert.AreEqual ("ABCDEFGHIJ", dr.GetValue (1), "#F5");
1373 Assert.IsFalse (dr.Read (), "#F6");
1377 DBHelper.ExecuteNonQuery (conn, delete_data);
1379 cmd = conn.CreateCommand ();
1380 cmd.CommandText = insert_data;
1381 param = cmd.Parameters.Add ("type_char", OdbcType.Char, 20);
1382 param.Value = string.Empty;
1383 cmd.ExecuteNonQuery ();
1386 cmd = conn.CreateCommand ();
1387 cmd.CommandText = select_data;
1388 param = cmd.Parameters.Add ("type_char", OdbcType.Char);
1389 param.Value = string.Empty;
1390 param = cmd.Parameters.Add ("id", OdbcType.Int);
1392 dr = cmd.ExecuteReader ();
1393 Assert.IsTrue (dr.Read (), "#G1");
1394 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
1395 Assert.AreEqual (6000, dr.GetValue (0), "#G3");
1396 Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#G4");
1397 if (ConnectionManager.Singleton.Engine.RemovesTrailingSpaces)
1398 Assert.AreEqual (string.Empty, dr.GetValue (1), "#G5");
1400 Assert.AreEqual (" ", dr.GetValue (1), "#G5");
1401 Assert.IsFalse (dr.Read (), "#G6");
1405 DBHelper.ExecuteNonQuery (conn, delete_data);
1407 cmd = conn.CreateCommand ();
1408 cmd.CommandText = insert_data;
1409 param = cmd.Parameters.Add ("type_char", OdbcType.Char);
1410 param.Value = DBNull.Value;
1411 cmd.ExecuteNonQuery ();
1414 cmd = conn.CreateCommand ();
1415 cmd.CommandText = select_by_id;
1416 param = cmd.Parameters.Add ("id", OdbcType.Int);
1418 dr = cmd.ExecuteReader ();
1419 Assert.IsTrue (dr.Read (), "#H1");
1420 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
1421 Assert.AreEqual (4, dr.GetValue (0), "#H3");
1422 Assert.AreEqual (typeof (string), dr.GetFieldType (1), "#H4");
1423 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#H5");
1424 Assert.IsFalse (dr.Read (), "#H6");
1434 DBHelper.ExecuteNonQuery (conn, delete_data);
1440 public void DecimalParameterTest ()
1442 string select_data1 = "select id, type_decimal1 from numeric_family where type_decimal1 = ? and id = ?";
1443 string select_data2 = "select id, type_decimal2 from numeric_family where type_decimal2 = ? and id = ?";
1444 string select_by_id = "select id, type_decimal1, type_decimal2 from numeric_family where id = ?";
1445 string insert_data = "insert into numeric_family (id, type_decimal1, type_decimal2) values (6000, ?, ?)";
1446 string delete_data = "delete from numeric_family where id = 6000";
1448 IDbConnection conn = ConnectionManager.Singleton.Connection;
1451 IDataReader dr = null;
1452 OdbcCommand cmd = null;
1453 OdbcParameter param;
1456 cmd = (OdbcCommand) conn.CreateCommand ();
1457 cmd.CommandText = select_data1;
1458 param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
1459 param.Value = 1000.00m;
1460 param = cmd.Parameters.Add ("id", OdbcType.Int);
1462 dr = cmd.ExecuteReader ();
1463 Assert.IsTrue (dr.Read (), "#A1");
1464 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
1465 Assert.AreEqual (1, dr.GetValue (0), "#A3");
1466 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#A4");
1467 Assert.AreEqual (1000m, dr.GetValue (1), "#A5");
1468 Assert.IsFalse (dr.Read (), "#A6");
1472 cmd = (OdbcCommand) conn.CreateCommand ();
1473 cmd.CommandText = select_data1;
1474 param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
1475 param.Value = -1000.00m;
1476 param = cmd.Parameters.Add ("id", OdbcType.Int);
1478 dr = cmd.ExecuteReader ();
1479 Assert.IsTrue (dr.Read (), "#B1");
1480 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
1481 Assert.AreEqual (2, dr.GetValue (0), "#B3");
1482 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#B4");
1483 Assert.AreEqual (-1000m, dr.GetValue (1), "#B5");
1484 Assert.IsFalse (dr.Read (), "#B6");
1488 cmd = (OdbcCommand) conn.CreateCommand ();
1489 cmd.CommandText = select_data2;
1490 param = cmd.Parameters.Add ("type_decimal2", OdbcType.Decimal);
1491 param.Value = 4456.432m;
1492 param = cmd.Parameters.Add ("id", OdbcType.Int);
1494 dr = cmd.ExecuteReader ();
1495 Assert.IsTrue (dr.Read (), "#C1");
1496 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
1497 Assert.AreEqual (1, dr.GetValue (0), "#C3");
1498 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#C4");
1499 Assert.AreEqual (4456.432m, dr.GetValue (1), "#C5");
1500 Assert.IsFalse (dr.Read (), "#C6");
1504 cmd = (OdbcCommand) conn.CreateCommand ();
1505 cmd.CommandText = select_data2;
1506 param = cmd.Parameters.Add ("type_decimal2", OdbcType.Decimal);
1507 param.Value = -4456.432m;
1508 param = cmd.Parameters.Add ("id", OdbcType.Int);
1510 dr = cmd.ExecuteReader ();
1511 Assert.IsTrue (dr.Read (), "#D1");
1512 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
1513 Assert.AreEqual (2, dr.GetValue (0), "#D3");
1514 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#D4");
1515 Assert.AreEqual (-4456.432m, dr.GetValue (1), "#D5");
1516 Assert.IsFalse (dr.Read (), "#D6");
1520 cmd = (OdbcCommand) conn.CreateCommand ();
1521 cmd.CommandText = select_data1;
1522 param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
1524 param = cmd.Parameters.Add ("id", OdbcType.Int);
1526 dr = cmd.ExecuteReader ();
1527 Assert.IsTrue (dr.Read (), "#E1");
1528 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
1529 Assert.AreEqual (3, dr.GetValue (0), "#E3");
1530 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#E4");
1531 Assert.AreEqual (0m, dr.GetValue (1), "#E5");
1532 Assert.IsFalse (dr.Read (), "#E6");
1536 cmd = (OdbcCommand) conn.CreateCommand ();
1537 cmd.CommandText = select_data1;
1538 param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
1539 param.Value = DBNull.Value;
1540 param = cmd.Parameters.Add ("id", OdbcType.Int);
1542 dr = cmd.ExecuteReader ();
1543 Assert.IsFalse (dr.Read (), "#F");
1547 cmd = (OdbcCommand) conn.CreateCommand ();
1548 cmd.CommandText = select_by_id;
1549 param = cmd.Parameters.Add ("id", OdbcType.Int);
1551 dr = cmd.ExecuteReader ();
1552 Assert.IsTrue (dr.Read (), "#G1");
1553 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
1554 Assert.AreEqual (4, dr.GetValue (0), "#G3");
1555 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#G4");
1556 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#G5");
1557 Assert.AreEqual (typeof (decimal), dr.GetFieldType (2), "#G6");
1558 Assert.AreEqual (DBNull.Value, dr.GetValue (2), "#G7");
1559 Assert.IsFalse (dr.Read (), "#G8");
1563 cmd = (OdbcCommand) conn.CreateCommand ();
1564 cmd.CommandText = insert_data;
1565 param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
1566 param.Value = -1000.5678m;
1567 param = cmd.Parameters.Add ("type_decimal2", OdbcType.Decimal);
1568 param.Value = -1000.5678m;
1569 cmd.ExecuteNonQuery ();
1572 cmd = (OdbcCommand) conn.CreateCommand ();
1573 cmd.CommandText = select_data1;
1574 param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
1575 param.Value = -1000.5678m;
1576 param = cmd.Parameters.Add ("id", OdbcType.Int);
1578 dr = cmd.ExecuteReader ();
1579 Assert.IsFalse (dr.Read (), "#H");
1583 cmd = (OdbcCommand) conn.CreateCommand ();
1584 cmd.CommandText = select_data1;
1585 param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
1586 param.Value = -1001;
1587 param = cmd.Parameters.Add ("id", OdbcType.Int);
1589 dr = cmd.ExecuteReader ();
1590 Assert.IsTrue (dr.Read (), "#I1");
1591 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#I2");
1592 Assert.AreEqual (6000, dr.GetValue (0), "#I3");
1593 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#I4");
1594 Assert.AreEqual (-1001m, dr.GetValue (1), "#I5");
1595 Assert.IsFalse (dr.Read (), "#I6");
1599 cmd = (OdbcCommand) conn.CreateCommand ();
1600 cmd.CommandText = select_data2;
1601 param = cmd.Parameters.Add ("type_decimal2", OdbcType.Decimal);
1602 param.Value = -1000.5678m;
1603 param = cmd.Parameters.Add ("id", OdbcType.Int);
1605 dr = cmd.ExecuteReader ();
1606 Assert.IsFalse (dr.Read (), "#J");
1610 cmd = (OdbcCommand) conn.CreateCommand ();
1611 cmd.CommandText = select_data2;
1612 param = cmd.Parameters.Add ("type_decimal2", OdbcType.Decimal);
1613 param.Value = -1000.568m;
1614 param = cmd.Parameters.Add ("id", OdbcType.Int);
1616 dr = cmd.ExecuteReader ();
1617 Assert.IsTrue (dr.Read (), "#K1");
1618 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#K2");
1619 Assert.AreEqual (6000, dr.GetValue (0), "#K3");
1620 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#K4");
1621 Assert.AreEqual (-1000.568m, dr.GetValue (1), "#K5");
1622 Assert.IsFalse (dr.Read (), "#K6");
1626 DBHelper.ExecuteNonQuery (conn, delete_data);
1628 cmd = (OdbcCommand) conn.CreateCommand ();
1629 cmd.CommandText = insert_data;
1630 param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
1631 param.Value = 56789m;
1632 param.Precision = 7;
1634 param = cmd.Parameters.Add ("type_decimal2", OdbcType.Decimal);
1635 param.Value = 98765.5678m;
1636 param.Precision = 10;
1638 cmd.ExecuteNonQuery ();
1641 cmd = (OdbcCommand) conn.CreateCommand ();
1642 cmd.CommandText = select_by_id;
1643 param = cmd.Parameters.Add ("id", OdbcType.Int);
1645 dr = cmd.ExecuteReader ();
1646 Assert.IsTrue (dr.Read (), "#L1");
1647 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#L2");
1648 Assert.AreEqual (6000, dr.GetValue (0), "#L3");
1649 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#L4");
1650 Assert.AreEqual (56789m, dr.GetValue (1), "#L5");
1651 Assert.AreEqual (typeof (decimal), dr.GetFieldType (2), "#L6");
1652 if (ConnectionManager.Singleton.Engine.Type == EngineType.MySQL)
1653 Assert.AreEqual (9876556.780m, dr.GetValue (2), "#L7");
1655 Assert.AreEqual (98765.570m, dr.GetValue (2), "#L7");
1656 Assert.IsFalse (dr.Read (), "#L8");
1660 DBHelper.ExecuteNonQuery (conn, delete_data);
1662 cmd = (OdbcCommand) conn.CreateCommand ();
1663 cmd.CommandText = insert_data;
1664 param = cmd.Parameters.Add ("type_decimal1", OdbcType.Decimal);
1665 param.Value = DBNull.Value;
1666 param = cmd.Parameters.Add ("type_decimal2", OdbcType.Decimal);
1667 param.Value = DBNull.Value;
1668 cmd.ExecuteNonQuery ();
1671 cmd = (OdbcCommand) conn.CreateCommand ();
1672 cmd.CommandText = select_by_id;
1673 param = cmd.Parameters.Add ("id", OdbcType.Int);
1675 dr = cmd.ExecuteReader ();
1676 Assert.IsTrue (dr.Read (), "#M1");
1677 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#M2");
1678 Assert.AreEqual (6000, dr.GetValue (0), "#M3");
1679 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#M4");
1680 if (ConnectionManager.Singleton.Engine.Type == EngineType.MySQL)
1681 Assert.AreEqual (0m, dr.GetValue (1), "#M5");
1683 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#M5");
1684 Assert.AreEqual (typeof (decimal), dr.GetFieldType (2), "#M6");
1685 if (ConnectionManager.Singleton.Engine.Type == EngineType.MySQL)
1686 Assert.AreEqual (0m, dr.GetValue (1), "#M7");
1688 Assert.AreEqual (DBNull.Value, dr.GetValue (2), "#M7");
1689 Assert.IsFalse (dr.Read (), "#M8");
1699 DBHelper.ExecuteNonQuery (conn, delete_data);
1705 public void DoubleParameterTest ()
1707 string insert_data = "insert into numeric_family (id, type_double) values (6000, ?)";
1708 string select_data = "select id, type_double from numeric_family where type_double = ? and id = ?";
1709 string select_by_id = "select id, type_double from numeric_family where id = ?";
1710 string delete_data = "delete from numeric_family where id = 6000";
1712 IDbConnection conn = ConnectionManager.Singleton.Connection;
1715 IDataReader dr = null;
1716 OdbcCommand cmd = null;
1717 OdbcParameter param;
1720 cmd = (OdbcCommand) conn.CreateCommand ();
1721 cmd.CommandText = select_data;
1722 param = cmd.Parameters.Add ("type_double", OdbcType.Double);
1723 param.Value = 1.79E+308;
1724 param = cmd.Parameters.Add ("id", OdbcType.Int);
1726 dr = cmd.ExecuteReader ();
1727 Assert.IsTrue (dr.Read (), "#A1");
1728 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
1729 Assert.AreEqual (1, dr.GetValue (0), "#A3");
1730 Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#A4");
1731 Assert.AreEqual (1.79E+308, dr.GetValue (1), "#A5");
1732 Assert.IsFalse (dr.Read (), "#A6");
1736 cmd = (OdbcCommand) conn.CreateCommand ();
1737 cmd.CommandText = select_data;
1738 param = cmd.Parameters.Add ("type_double", OdbcType.Double);
1739 param.Value = -1.79E+308;
1740 param = cmd.Parameters.Add ("id", OdbcType.Int);
1742 dr = cmd.ExecuteReader ();
1743 Assert.IsTrue (dr.Read (), "#B1");
1744 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
1745 Assert.AreEqual (2, dr.GetValue (0), "#B3");
1746 Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#B4");
1747 Assert.AreEqual (-1.79E+308, dr.GetValue (1), "#B5");
1748 Assert.IsFalse (dr.Read (), "#B6");
1752 cmd = (OdbcCommand) conn.CreateCommand ();
1753 cmd.CommandText = select_data;
1754 param = cmd.Parameters.Add ("type_double", OdbcType.Double);
1756 param = cmd.Parameters.Add ("id", OdbcType.Int);
1758 dr = cmd.ExecuteReader ();
1759 Assert.IsTrue (dr.Read (), "#C1");
1760 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
1761 Assert.AreEqual (3, dr.GetValue (0), "#C3");
1762 Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#C4");
1763 Assert.AreEqual (0d, dr.GetValue (1), "#C5");
1764 Assert.IsFalse (dr.Read (), "#C6");
1768 cmd = (OdbcCommand) conn.CreateCommand ();
1769 cmd.CommandText = select_by_id;
1770 param = cmd.Parameters.Add ("id", OdbcType.Int);
1772 dr = cmd.ExecuteReader ();
1773 Assert.IsTrue (dr.Read (), "#D1");
1774 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
1775 Assert.AreEqual (4, dr.GetValue (0), "#D3");
1776 Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#D4");
1777 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
1778 Assert.IsFalse (dr.Read (), "#D6");
1782 cmd = (OdbcCommand) conn.CreateCommand ();
1783 cmd.CommandText = insert_data;
1784 param = cmd.Parameters.Add ("type_double", OdbcType.Double);
1785 param.Value = 1.79E+308;
1786 cmd.ExecuteNonQuery ();
1789 cmd = (OdbcCommand) conn.CreateCommand ();
1790 cmd.CommandText = select_data;
1791 param = cmd.Parameters.Add ("type_double", OdbcType.Double);
1792 param.Value = 1.79E+308;
1793 param = cmd.Parameters.Add ("id", OdbcType.Int);
1795 dr = cmd.ExecuteReader ();
1796 Assert.IsTrue (dr.Read (), "#E1");
1797 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
1798 Assert.AreEqual (6000, dr.GetValue (0), "#E3");
1799 Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#E4");
1800 Assert.AreEqual (1.79E+308, dr.GetValue (1), "#E5");
1801 Assert.IsFalse (dr.Read (), "#E6");
1805 DBHelper.ExecuteNonQuery (conn, delete_data);
1807 cmd = (OdbcCommand) conn.CreateCommand ();
1808 cmd.CommandText = insert_data;
1809 param = cmd.Parameters.Add ("type_double", OdbcType.Double);
1810 param.Value = -1.79E+308;
1811 cmd.ExecuteNonQuery ();
1814 cmd = (OdbcCommand) conn.CreateCommand ();
1815 cmd.CommandText = select_data;
1816 param = cmd.Parameters.Add ("type_double", OdbcType.Double);
1817 param.Value = -1.79E+308;
1818 param = cmd.Parameters.Add ("id", OdbcType.Int);
1820 dr = cmd.ExecuteReader ();
1821 Assert.IsTrue (dr.Read (), "#F1");
1822 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
1823 Assert.AreEqual (6000, dr.GetValue (0), "#F3");
1824 Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#F4");
1825 Assert.AreEqual (-1.79E+308, dr.GetValue (1), "#F5");
1826 Assert.IsFalse (dr.Read (), "#F6");
1830 DBHelper.ExecuteNonQuery (conn, delete_data);
1832 cmd = (OdbcCommand) conn.CreateCommand ();
1833 cmd.CommandText = insert_data;
1834 param = cmd.Parameters.Add ("type_double", OdbcType.Double);
1835 param.Value = "45543,55";
1836 cmd.ExecuteNonQuery ();
1839 cmd = (OdbcCommand) conn.CreateCommand ();
1840 cmd.CommandText = select_data;
1841 param = cmd.Parameters.Add ("type_double", OdbcType.Double);
1842 param.Value = "45543,55";
1843 param = cmd.Parameters.Add ("id", OdbcType.Int);
1845 dr = cmd.ExecuteReader ();
1846 Assert.IsTrue (dr.Read (), "#G1");
1847 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
1848 Assert.AreEqual (6000, dr.GetValue (0), "#G3");
1849 Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#G4");
1850 Assert.AreEqual (45543.55d, dr.GetValue (1), "#G5");
1851 Assert.IsFalse (dr.Read (), "#G6");
1855 DBHelper.ExecuteNonQuery (conn, delete_data);
1857 cmd = (OdbcCommand) conn.CreateCommand ();
1858 cmd.CommandText = insert_data;
1859 param = cmd.Parameters.Add ("type_double", OdbcType.Double);
1860 param.Value = DBNull.Value;
1861 cmd.ExecuteNonQuery ();
1864 cmd = (OdbcCommand) conn.CreateCommand ();
1865 cmd.CommandText = select_by_id;
1866 param = cmd.Parameters.Add ("id", OdbcType.Int);
1868 dr = cmd.ExecuteReader ();
1869 Assert.IsTrue (dr.Read (), "#H1");
1870 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
1871 Assert.AreEqual (6000, dr.GetValue (0), "#H3");
1872 Assert.AreEqual (typeof (double), dr.GetFieldType (1), "#H4");
1873 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#H5");
1874 Assert.IsFalse (dr.Read (), "#H6");
1884 DBHelper.ExecuteNonQuery (conn, delete_data);
1890 public void ImageParameterTest ()
1892 string insert_data = "insert into binary_family (id, type_blob) values (6000, ?)";
1893 string select_data = "select type_blob from binary_family where id = ?";
1894 string delete_data = "delete from binary_family where id = 6000";
1896 IDbConnection conn = ConnectionManager.Singleton.Connection;
1899 IDataReader dr = null;
1900 OdbcCommand cmd = null;
1901 OdbcParameter param;
1904 byte [] bytes = new byte [] { 0x32, 0x56, 0x00,
1907 cmd = (OdbcCommand) conn.CreateCommand ();
1908 cmd.CommandText = select_data;
1909 param = cmd.Parameters.Add ("id", OdbcType.Int);
1911 dr = cmd.ExecuteReader ();
1912 Assert.IsTrue (dr.Read (), "#A1");
1913 Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#A2");
1914 Assert.AreEqual (bytes, dr.GetValue (0), "#A3");
1915 Assert.IsFalse (dr.Read (), "#A4");
1919 bytes = new byte [] { 0x00, 0x66, 0x06, 0x66,
1920 0x97, 0x00, 0x66, 0x06, 0x66, 0x97, 0x06,
1921 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
1922 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
1923 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
1924 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
1925 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
1926 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
1927 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
1928 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
1929 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
1930 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
1931 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
1932 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
1933 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
1934 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
1935 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
1936 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
1937 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
1938 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
1939 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
1940 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
1941 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
1942 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
1943 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
1944 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
1945 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
1946 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
1947 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
1948 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
1949 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
1950 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
1951 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
1952 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
1953 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
1954 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
1955 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
1956 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
1957 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
1958 0x06, 0x66, 0x06, 0x66, 0x98};
1960 cmd = (OdbcCommand) conn.CreateCommand ();
1961 cmd.CommandText = select_data;
1962 param = cmd.Parameters.Add ("id", OdbcType.Int);
1964 dr = cmd.ExecuteReader ();
1965 Assert.IsTrue (dr.Read (), "#B1");
1966 Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#B2");
1967 Assert.AreEqual (bytes, dr.GetValue (0), "#B3");
1968 Assert.IsFalse (dr.Read (), "#B4");
1972 bytes = new byte [8];
1974 cmd = (OdbcCommand) conn.CreateCommand ();
1975 cmd.CommandText = select_data;
1976 param = cmd.Parameters.Add ("id", OdbcType.Int);
1978 dr = cmd.ExecuteReader ();
1979 Assert.IsTrue (dr.Read (), "#C1");
1980 Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#C2");
1981 Assert.AreEqual (new byte [0], dr.GetValue (0), "#C3");
1982 Assert.IsFalse (dr.Read (), "#C4");
1986 cmd = (OdbcCommand) conn.CreateCommand ();
1987 cmd.CommandText = select_data;
1988 param = cmd.Parameters.Add ("id", OdbcType.Int);
1990 dr = cmd.ExecuteReader ();
1991 Assert.IsTrue (dr.Read (), "#D1");
1992 Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#D2");
1993 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
1994 Assert.IsFalse (dr.Read (), "#D4");
1998 bytes = new byte [0];
2000 cmd = (OdbcCommand) conn.CreateCommand ();
2001 cmd.CommandText = insert_data;
2002 param = cmd.Parameters.Add ("type_blob", OdbcType.Image);
2003 param.Value = bytes;
2004 cmd.ExecuteNonQuery ();
2007 cmd = (OdbcCommand) conn.CreateCommand ();
2008 cmd.CommandText = select_data;
2009 param = cmd.Parameters.Add ("id", OdbcType.Int);
2011 dr = cmd.ExecuteReader ();
2012 Assert.IsTrue (dr.Read (), "#E1");
2013 Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#E2");
2014 Assert.AreEqual (bytes, dr.GetValue (0), "#E3");
2015 Assert.IsFalse (dr.Read (), "#E4");
2019 DBHelper.ExecuteNonQuery (conn, delete_data);
2021 bytes = new byte [] { 0x05 };
2023 cmd = (OdbcCommand) conn.CreateCommand ();
2024 cmd.CommandText = insert_data;
2025 param = cmd.Parameters.Add ("type_blob", OdbcType.Image);
2026 param.Value = bytes;
2027 cmd.ExecuteNonQuery ();
2030 cmd = (OdbcCommand) conn.CreateCommand ();
2031 cmd.CommandText = select_data;
2032 param = cmd.Parameters.Add ("id", OdbcType.Int);
2034 dr = cmd.ExecuteReader ();
2035 Assert.IsTrue (dr.Read (), "#F1");
2036 Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#F2");
2037 Assert.AreEqual (bytes, dr.GetValue (0), "#F3");
2038 Assert.IsFalse (dr.Read (), "#F4");
2042 DBHelper.ExecuteNonQuery (conn, delete_data);
2044 bytes = new byte [] { 0x34, 0x00, 0x32 };
2046 cmd = (OdbcCommand) conn.CreateCommand ();
2047 cmd.CommandText = insert_data;
2048 param = cmd.Parameters.Add ("type_blob", OdbcType.Image);
2049 param.Value = bytes;
2050 cmd.ExecuteNonQuery ();
2053 cmd = (OdbcCommand) conn.CreateCommand ();
2054 cmd.CommandText = select_data;
2055 param = cmd.Parameters.Add ("id", OdbcType.Int);
2057 dr = cmd.ExecuteReader ();
2058 Assert.IsTrue (dr.Read (), "#G1");
2059 Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#G2");
2060 Assert.AreEqual (bytes, dr.GetValue (0), "#G3");
2061 Assert.IsFalse (dr.Read (), "#G4");
2065 DBHelper.ExecuteNonQuery (conn, delete_data);
2067 bytes = new byte [] { 0x34, 0x00, 0x32, 0x05, 0x07, 0x13 };
2069 cmd = (OdbcCommand) conn.CreateCommand ();
2070 cmd.CommandText = insert_data;
2071 param = cmd.Parameters.Add ("type_blob", OdbcType.Image, 4);
2072 param.Value = bytes;
2073 cmd.ExecuteNonQuery ();
2076 cmd = (OdbcCommand) conn.CreateCommand ();
2077 cmd.CommandText = select_data;
2078 param = cmd.Parameters.Add ("id", OdbcType.Int);
2080 dr = cmd.ExecuteReader ();
2081 Assert.IsTrue (dr.Read (), "#H1");
2082 Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#H2");
2083 Assert.AreEqual (new byte [] { 0x34, 0x00, 0x32, 0x05 }, dr.GetValue (0), "#H3");
2084 Assert.IsFalse (dr.Read (), "#H4");
2088 DBHelper.ExecuteNonQuery (conn, delete_data);
2090 cmd = (OdbcCommand) conn.CreateCommand ();
2091 cmd.CommandText = insert_data;
2092 param = cmd.Parameters.Add ("type_blob", OdbcType.Image);
2093 param.Value = DBNull.Value;
2094 cmd.ExecuteNonQuery ();
2097 cmd = (OdbcCommand) conn.CreateCommand ();
2098 cmd.CommandText = select_data;
2099 param = cmd.Parameters.Add ("id", OdbcType.Int);
2101 dr = cmd.ExecuteReader ();
2102 Assert.IsTrue (dr.Read (), "#I1");
2103 Assert.AreEqual (typeof (byte []), dr.GetFieldType (0), "#I2");
2104 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#I3");
2105 Assert.IsFalse (dr.Read (), "#I4");
2115 DBHelper.ExecuteNonQuery (conn, delete_data);
2121 public void NCharParameterTest ()
2123 string insert_data = "insert into string_family (id, type_nchar) values (6000, ?)";
2124 string select_data = "select type_nchar from string_family where type_nchar = ? and id = ?";
2125 string select_by_id = "select type_nchar from string_family where id = ?";
2126 string delete_data = "delete from string_family where id = 6000";
2128 OdbcConnection conn = (OdbcConnection) ConnectionManager.Singleton.Connection;
2131 IDataReader dr = null;
2132 OdbcCommand cmd = null;
2133 OdbcParameter param;
2136 cmd = conn.CreateCommand ();
2137 cmd.CommandText = select_data;
2138 param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
2139 param.Value = "nch\u092d\u093er";
2140 param = cmd.Parameters.Add ("id", OdbcType.Int);
2142 dr = cmd.ExecuteReader ();
2143 Assert.IsTrue (dr.Read (), "#A1");
2144 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#A2");
2145 if (ConnectionManager.Singleton.Engine.RemovesTrailingSpaces)
2146 Assert.AreEqual ("nch\u092d\u093er", dr.GetValue (0), "#A3");
2148 Assert.AreEqual ("nch\u092d\u093er ", dr.GetValue (0), "#A3");
2149 Assert.IsFalse (dr.Read (), "#A4");
2153 cmd = conn.CreateCommand ();
2154 cmd.CommandText = select_data;
2155 param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
2156 param.Value = "0123456789";
2157 param = cmd.Parameters.Add ("id", OdbcType.Int);
2159 dr = cmd.ExecuteReader ();
2160 Assert.IsTrue (dr.Read (), "#B1");
2161 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#B2");
2162 Assert.AreEqual ("0123456789", dr.GetValue (0), "#B3");
2163 Assert.IsFalse (dr.Read (), "#B4");
2167 cmd = conn.CreateCommand ();
2168 cmd.CommandText = select_data;
2169 param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
2170 param.Value = string.Empty;
2171 param = cmd.Parameters.Add ("id", OdbcType.Int);
2173 dr = cmd.ExecuteReader ();
2174 Assert.IsTrue (dr.Read (), "#C1");
2175 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#C2");
2176 if (ConnectionManager.Singleton.Engine.RemovesTrailingSpaces)
2177 Assert.AreEqual (string.Empty, dr.GetValue (0), "#C3");
2179 Assert.AreEqual (" ", dr.GetValue (0), "#C3");
2180 Assert.IsFalse (dr.Read (), "#C4");
2184 cmd = conn.CreateCommand ();
2185 cmd.CommandText = select_by_id;
2186 param = cmd.Parameters.Add ("id", OdbcType.Int);
2188 dr = cmd.ExecuteReader ();
2189 Assert.IsTrue (dr.Read (), "#D1");
2190 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#D2");
2191 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
2192 Assert.IsFalse (dr.Read (), "#D4");
2196 cmd = conn.CreateCommand ();
2197 cmd.CommandText = insert_data;
2198 param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
2199 param.Value = "nchar";
2200 cmd.ExecuteNonQuery ();
2203 cmd = conn.CreateCommand ();
2204 cmd.CommandText = select_data;
2205 param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
2206 param.Value = "nchar";
2207 param = cmd.Parameters.Add ("id", OdbcType.Int);
2209 dr = cmd.ExecuteReader ();
2210 Assert.IsTrue (dr.Read (), "#E1");
2211 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#E2");
2212 if (ConnectionManager.Singleton.Engine.RemovesTrailingSpaces)
2213 Assert.AreEqual ("nchar", dr.GetValue (0), "#E3");
2215 Assert.AreEqual ("nchar ", dr.GetValue (0), "#E3");
2216 Assert.IsFalse (dr.Read (), "#E4");
2220 DBHelper.ExecuteNonQuery (conn, delete_data);
2222 cmd = conn.CreateCommand ();
2223 cmd.CommandText = insert_data;
2224 param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar, 4);
2225 param.Value = "nch\u0488r";
2226 cmd.ExecuteNonQuery ();
2229 cmd = conn.CreateCommand ();
2230 cmd.CommandText = select_data;
2231 param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar, 4);
2232 param.Value = "nch\u0488r";
2233 param = cmd.Parameters.Add ("id", OdbcType.Int);
2235 dr = cmd.ExecuteReader ();
2236 Assert.IsTrue (dr.Read (), "#F1");
2237 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#F2");
2238 if (ConnectionManager.Singleton.Engine.RemovesTrailingSpaces)
2239 Assert.AreEqual ("nch\u0488", dr.GetValue (0), "#F3");
2241 Assert.AreEqual ("nch\u0488 ", dr.GetValue (0), "#F3");
2242 Assert.IsFalse (dr.Read (), "#F4");
2246 DBHelper.ExecuteNonQuery (conn, delete_data);
2248 cmd = conn.CreateCommand ();
2249 cmd.CommandText = insert_data;
2250 param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar, 8);
2251 param.Value = "ch\u0488r";
2252 cmd.ExecuteNonQuery ();
2255 cmd = conn.CreateCommand ();
2256 cmd.CommandText = select_data;
2257 param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
2258 param.Value = "ch\u0488r";
2259 param = cmd.Parameters.Add ("id", OdbcType.Int);
2261 dr = cmd.ExecuteReader ();
2262 Assert.IsTrue (dr.Read (), "#G1");
2263 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#G2");
2264 if (ConnectionManager.Singleton.Engine.RemovesTrailingSpaces)
2265 Assert.AreEqual ("ch\u0488r", dr.GetValue (0), "#G3");
2267 Assert.AreEqual ("ch\u0488r ", dr.GetValue (0), "#G3");
2268 Assert.IsFalse (dr.Read (), "#G4");
2272 DBHelper.ExecuteNonQuery (conn, delete_data);
2274 cmd = conn.CreateCommand ();
2275 cmd.CommandText = insert_data;
2276 param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar, 15);
2277 param.Value = "0123456789";
2278 cmd.ExecuteNonQuery ();
2281 cmd = conn.CreateCommand ();
2282 cmd.CommandText = select_data;
2283 param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
2284 param.Value = "0123456789";
2285 param = cmd.Parameters.Add ("id", OdbcType.Int);
2287 dr = cmd.ExecuteReader ();
2288 Assert.IsTrue (dr.Read (), "#H1");
2289 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#H2");
2290 Assert.AreEqual ("0123456789", dr.GetValue (0), "#H3");
2291 Assert.IsFalse (dr.Read (), "#H4");
2295 DBHelper.ExecuteNonQuery (conn, delete_data);
2297 cmd = conn.CreateCommand ();
2298 cmd.CommandText = insert_data;
2299 param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar, 15);
2300 param.Value = string.Empty;
2301 cmd.ExecuteNonQuery ();
2304 cmd = conn.CreateCommand ();
2305 cmd.CommandText = select_data;
2306 param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
2307 param.Value = string.Empty;
2308 param = cmd.Parameters.Add ("id", OdbcType.Int);
2310 dr = cmd.ExecuteReader ();
2311 Assert.IsTrue (dr.Read (), "#I1");
2312 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#I2");
2313 if (ConnectionManager.Singleton.Engine.RemovesTrailingSpaces)
2314 Assert.AreEqual (string.Empty, dr.GetValue (0), "#I3");
2316 Assert.AreEqual (" ", dr.GetValue (0), "#I3");
2317 Assert.IsFalse (dr.Read (), "#I4");
2321 DBHelper.ExecuteNonQuery (conn, delete_data);
2323 cmd = conn.CreateCommand ();
2324 cmd.CommandText = insert_data;
2325 param = cmd.Parameters.Add ("type_nchar", OdbcType.NChar);
2326 param.Value = DBNull.Value;
2327 cmd.ExecuteNonQuery ();
2330 cmd = conn.CreateCommand ();
2331 cmd.CommandText = select_by_id;
2332 param = cmd.Parameters.Add ("id", OdbcType.Int);
2334 dr = cmd.ExecuteReader ();
2335 Assert.IsTrue (dr.Read (), "#J1");
2336 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#J2");
2337 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#J3");
2338 Assert.IsFalse (dr.Read (), "#J4");
2348 DBHelper.ExecuteNonQuery (conn, delete_data);
2354 public void NTextParameterTest ()
2356 string insert_data = "insert into string_family (id, type_ntext) values (6000, ?)";
2357 string select_by_id = "select type_ntext from string_family where id = ?";
2358 string delete_data = "delete from string_family where id = 6000";
2360 OdbcConnection conn = (OdbcConnection) ConnectionManager.Singleton.Connection;
2363 IDataReader dr = null;
2364 OdbcCommand cmd = null;
2365 OdbcParameter param;
2368 cmd = conn.CreateCommand ();
2369 cmd.CommandText = select_by_id;
2370 param = cmd.Parameters.Add ("id", OdbcType.Int);
2372 dr = cmd.ExecuteReader ();
2373 Assert.IsTrue (dr.Read (), "#A1");
2374 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#A2");
2375 Assert.AreEqual ("nt\u092d\u093ext", dr.GetValue (0), "#A3");
2376 Assert.IsFalse (dr.Read (), "#A4");
2380 cmd = conn.CreateCommand ();
2381 cmd.CommandText = select_by_id;
2382 param = cmd.Parameters.Add ("id", OdbcType.Int);
2384 dr = cmd.ExecuteReader ();
2385 Assert.IsTrue (dr.Read (), "#B1");
2386 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#B2");
2387 Assert.AreEqual ("nt\u092d\u093ext ", dr.GetValue (0), "#B3");
2388 Assert.IsFalse (dr.Read (), "#B4");
2392 cmd = conn.CreateCommand ();
2393 cmd.CommandText = select_by_id;
2394 param = cmd.Parameters.Add ("id", OdbcType.Int);
2396 dr = cmd.ExecuteReader ();
2397 Assert.IsTrue (dr.Read (), "#C1");
2398 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#C2");
2399 Assert.AreEqual (string.Empty, dr.GetValue (0), "#C3");
2400 Assert.IsFalse (dr.Read (), "#C4");
2404 cmd = conn.CreateCommand ();
2405 cmd.CommandText = select_by_id;
2406 param = cmd.Parameters.Add ("id", OdbcType.Int);
2408 dr = cmd.ExecuteReader ();
2409 Assert.IsTrue (dr.Read (), "#D1");
2410 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#D2");
2411 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
2412 Assert.IsFalse (dr.Read (), "#D4");
2416 cmd = conn.CreateCommand ();
2417 cmd.CommandText = insert_data;
2418 param = cmd.Parameters.Add ("type_ntext", OdbcType.NText, 4);
2419 param.Value = "nt\u0488xt";
2420 cmd.ExecuteNonQuery ();
2423 cmd = (OdbcCommand) conn.CreateCommand ();
2424 cmd.CommandText = select_by_id;
2425 param = cmd.Parameters.Add ("id", OdbcType.Int);
2427 dr = cmd.ExecuteReader ();
2428 Assert.IsTrue (dr.Read (), "#E1");
2429 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#E2");
2430 Assert.AreEqual ("nt\u0488x", dr.GetValue (0), "#E3");
2431 Assert.IsFalse (dr.Read (), "#E4");
2435 DBHelper.ExecuteNonQuery (conn, delete_data);
2437 cmd = conn.CreateCommand ();
2438 cmd.CommandText = insert_data;
2439 param = cmd.Parameters.Add ("type_ntext", OdbcType.NText, 15);
2440 param.Value = "nt\u0488xt ";
2441 cmd.ExecuteNonQuery ();
2444 cmd = (OdbcCommand) conn.CreateCommand ();
2445 cmd.CommandText = select_by_id;
2446 param = cmd.Parameters.Add ("id", OdbcType.Int);
2448 dr = cmd.ExecuteReader ();
2449 Assert.IsTrue (dr.Read (), "#F1");
2450 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#F2");
2451 Assert.AreEqual ("nt\u0488xt ", dr.GetValue (0), "#F3");
2452 Assert.IsFalse (dr.Read (), "#F4");
2456 DBHelper.ExecuteNonQuery (conn, delete_data);
2458 cmd = (OdbcCommand) conn.CreateCommand ();
2459 cmd.CommandText = insert_data;
2460 param = cmd.Parameters.Add ("type_ntext", OdbcType.NText, 8);
2461 param.Value = string.Empty;
2462 cmd.ExecuteNonQuery ();
2465 cmd = (OdbcCommand) conn.CreateCommand ();
2466 cmd.CommandText = select_by_id;
2467 param = cmd.Parameters.Add ("id", OdbcType.Int);
2469 dr = cmd.ExecuteReader ();
2470 Assert.IsTrue (dr.Read (), "#G1");
2471 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#G2");
2472 Assert.AreEqual (string.Empty, dr.GetValue (0), "#G3");
2473 Assert.IsFalse (dr.Read (), "#G4");
2477 DBHelper.ExecuteNonQuery (conn, delete_data);
2479 cmd = (OdbcCommand) conn.CreateCommand ();
2480 cmd.CommandText = insert_data;
2481 param = cmd.Parameters.Add ("type_ntext", OdbcType.NText, 8);
2482 param.Value = DBNull.Value;
2483 cmd.ExecuteNonQuery ();
2486 cmd = (OdbcCommand) conn.CreateCommand ();
2487 cmd.CommandText = select_by_id;
2488 param = cmd.Parameters.Add ("id", OdbcType.Int);
2490 dr = cmd.ExecuteReader ();
2491 Assert.IsTrue (dr.Read (), "#H1");
2492 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#H2");
2493 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#H3");
2494 Assert.IsFalse (dr.Read (), "#H4");
2504 DBHelper.ExecuteNonQuery (conn, delete_data);
2510 public void TextParameterTest ()
2512 string insert_data = "insert into string_family (id, type_text) values (6000, ?)";
2513 string select_by_id = "select type_text from string_family where id = ?";
2514 string delete_data = "delete from string_family where id = 6000";
2516 OdbcConnection conn = (OdbcConnection) ConnectionManager.Singleton.Connection;
2519 IDataReader dr = null;
2520 OdbcCommand cmd = null;
2521 OdbcParameter param;
2524 cmd = conn.CreateCommand ();
2525 cmd.CommandText = select_by_id;
2526 param = cmd.Parameters.Add ("id", OdbcType.Int);
2528 dr = cmd.ExecuteReader ();
2529 Assert.IsTrue (dr.Read (), "#A1");
2530 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#A2");
2531 Assert.AreEqual ("text", dr.GetValue (0), "#A3");
2532 Assert.IsFalse (dr.Read (), "#A4");
2536 StringBuilder sb = new StringBuilder ();
2537 for (int i = 0; i < 30; i++)
2538 sb.Append ("longtext ");
2540 cmd = conn.CreateCommand ();
2541 cmd.CommandText = select_by_id;
2542 param = cmd.Parameters.Add ("id", OdbcType.Int);
2544 dr = cmd.ExecuteReader ();
2545 Assert.IsTrue (dr.Read (), "#B1");
2546 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#B2");
2547 Assert.AreEqual (sb.ToString (), dr.GetValue (0), "#B3");
2548 Assert.IsFalse (dr.Read (), "#B4");
2552 cmd = conn.CreateCommand ();
2553 cmd.CommandText = select_by_id;
2554 param = cmd.Parameters.Add ("id", OdbcType.Int);
2556 dr = cmd.ExecuteReader ();
2557 Assert.IsTrue (dr.Read (), "#C1");
2558 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#C2");
2559 Assert.AreEqual (string.Empty, dr.GetValue (0), "#C3");
2560 Assert.IsFalse (dr.Read (), "#C4");
2564 cmd = conn.CreateCommand ();
2565 cmd.CommandText = select_by_id;
2566 param = cmd.Parameters.Add ("id", OdbcType.Int);
2568 dr = cmd.ExecuteReader ();
2569 Assert.IsTrue (dr.Read (), "#D1");
2570 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#D2");
2571 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
2572 Assert.IsFalse (dr.Read (), "#D4");
2576 cmd = conn.CreateCommand ();
2577 cmd.CommandText = insert_data;
2578 param = cmd.Parameters.Add ("type_text", OdbcType.Text);
2579 param.Value = sb.ToString ();
2580 cmd.ExecuteNonQuery ();
2583 cmd = (OdbcCommand) conn.CreateCommand ();
2584 cmd.CommandText = select_by_id;
2585 param = cmd.Parameters.Add ("id", OdbcType.Int);
2587 dr = cmd.ExecuteReader ();
2588 Assert.IsTrue (dr.Read (), "#E1");
2589 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#E2");
2590 Assert.AreEqual (sb.ToString (), dr.GetValue (0), "#E3");
2591 Assert.IsFalse (dr.Read (), "#E4");
2595 DBHelper.ExecuteNonQuery (conn, delete_data);
2597 cmd = conn.CreateCommand ();
2598 cmd.CommandText = insert_data;
2599 param = cmd.Parameters.Add ("type_text", OdbcType.Text, 2);
2600 param.Value = "text";
2601 cmd.ExecuteNonQuery ();
2604 cmd = (OdbcCommand) conn.CreateCommand ();
2605 cmd.CommandText = select_by_id;
2606 param = cmd.Parameters.Add ("id", OdbcType.Int);
2608 dr = cmd.ExecuteReader ();
2609 Assert.IsTrue (dr.Read (), "#F1");
2610 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#F2");
2611 Assert.AreEqual ("te", dr.GetValue (0), "#F3");
2612 Assert.IsFalse (dr.Read (), "#F4");
2616 DBHelper.ExecuteNonQuery (conn, delete_data);
2618 cmd = (OdbcCommand) conn.CreateCommand ();
2619 cmd.CommandText = insert_data;
2620 param = cmd.Parameters.Add ("type_text", OdbcType.Text, 8);
2621 param.Value = string.Empty;
2622 cmd.ExecuteNonQuery ();
2625 cmd = (OdbcCommand) conn.CreateCommand ();
2626 cmd.CommandText = select_by_id;
2627 param = cmd.Parameters.Add ("id", OdbcType.Int);
2629 dr = cmd.ExecuteReader ();
2630 Assert.IsTrue (dr.Read (), "#G1");
2631 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#G2");
2632 Assert.AreEqual (string.Empty, dr.GetValue (0), "#G3");
2633 Assert.IsFalse (dr.Read (), "#G4");
2637 DBHelper.ExecuteNonQuery (conn, delete_data);
2639 cmd = (OdbcCommand) conn.CreateCommand ();
2640 cmd.CommandText = insert_data;
2641 param = cmd.Parameters.Add ("type_text", OdbcType.Text, 8);
2642 param.Value = DBNull.Value;
2643 cmd.ExecuteNonQuery ();
2646 cmd = (OdbcCommand) conn.CreateCommand ();
2647 cmd.CommandText = select_by_id;
2648 param = cmd.Parameters.Add ("id", OdbcType.Int);
2650 dr = cmd.ExecuteReader ();
2651 Assert.IsTrue (dr.Read (), "#H1");
2652 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#H2");
2653 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#H3");
2654 Assert.IsFalse (dr.Read (), "#H4");
2664 DBHelper.ExecuteNonQuery (conn, delete_data);
2670 public void NumericParameterTest ()
2672 string select_data1 = "select id, type_numeric1 from numeric_family where type_numeric1 = ? and id = ?";
2673 string select_data2 = "select id, type_numeric2 from numeric_family where type_numeric2 = ? and id = ?";
2674 string select_by_id = "select id, type_numeric1, type_numeric2 from numeric_family where id = ?";
2675 string insert_data = "insert into numeric_family (id, type_numeric1, type_numeric2) values (6000, ?, ?)";
2676 string delete_data = "delete from numeric_family where id = 6000";
2678 IDbConnection conn = ConnectionManager.Singleton.Connection;
2681 IDataReader dr = null;
2682 OdbcCommand cmd = null;
2683 OdbcParameter param;
2686 cmd = (OdbcCommand) conn.CreateCommand ();
2687 cmd.CommandText = select_data1;
2688 param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
2689 param.Value = 1000.00m;
2690 param = cmd.Parameters.Add ("id", OdbcType.Int);
2692 dr = cmd.ExecuteReader ();
2693 Assert.IsTrue (dr.Read (), "#A1");
2694 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
2695 Assert.AreEqual (1, dr.GetValue (0), "#A3");
2696 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#A4");
2697 Assert.AreEqual (1000m, dr.GetValue (1), "#A5");
2698 Assert.IsFalse (dr.Read (), "#A6");
2702 cmd = (OdbcCommand) conn.CreateCommand ();
2703 cmd.CommandText = select_data1;
2704 param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
2705 param.Value = -1000.00m;
2706 param = cmd.Parameters.Add ("id", OdbcType.Int);
2708 dr = cmd.ExecuteReader ();
2709 Assert.IsTrue (dr.Read (), "#B1");
2710 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
2711 Assert.AreEqual (2, dr.GetValue (0), "#B3");
2712 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#B4");
2713 Assert.AreEqual (-1000m, dr.GetValue (1), "#B5");
2714 Assert.IsFalse (dr.Read (), "#B6");
2718 cmd = (OdbcCommand) conn.CreateCommand ();
2719 cmd.CommandText = select_data2;
2720 param = cmd.Parameters.Add ("type_numeric2", OdbcType.Numeric);
2721 param.Value = 4456.432m;
2722 param = cmd.Parameters.Add ("id", OdbcType.Int);
2724 dr = cmd.ExecuteReader ();
2725 Assert.IsTrue (dr.Read (), "#C1");
2726 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
2727 Assert.AreEqual (1, dr.GetValue (0), "#C3");
2728 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#C4");
2729 Assert.AreEqual (4456.432m, dr.GetValue (1), "#C5");
2730 Assert.IsFalse (dr.Read (), "#C6");
2734 cmd = (OdbcCommand) conn.CreateCommand ();
2735 cmd.CommandText = select_data2;
2736 param = cmd.Parameters.Add ("type_numeric2", OdbcType.Numeric);
2737 param.Value = -4456.432m;
2738 param = cmd.Parameters.Add ("id", OdbcType.Int);
2740 dr = cmd.ExecuteReader ();
2741 Assert.IsTrue (dr.Read (), "#D1");
2742 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
2743 Assert.AreEqual (2, dr.GetValue (0), "#D3");
2744 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#D4");
2745 Assert.AreEqual (-4456.432m, dr.GetValue (1), "#D5");
2746 Assert.IsFalse (dr.Read (), "#D6");
2750 cmd = (OdbcCommand) conn.CreateCommand ();
2751 cmd.CommandText = select_data1;
2752 param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
2754 param = cmd.Parameters.Add ("id", OdbcType.Int);
2756 dr = cmd.ExecuteReader ();
2757 Assert.IsTrue (dr.Read (), "#E1");
2758 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
2759 Assert.AreEqual (3, dr.GetValue (0), "#E3");
2760 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#E4");
2761 Assert.AreEqual (0m, dr.GetValue (1), "#E5");
2762 Assert.IsFalse (dr.Read (), "#E6");
2766 cmd = (OdbcCommand) conn.CreateCommand ();
2767 cmd.CommandText = select_data1;
2768 param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
2769 param.Value = DBNull.Value;
2770 param = cmd.Parameters.Add ("id", OdbcType.Int);
2772 dr = cmd.ExecuteReader ();
2773 Assert.IsFalse (dr.Read (), "#F");
2777 cmd = (OdbcCommand) conn.CreateCommand ();
2778 cmd.CommandText = select_by_id;
2779 param = cmd.Parameters.Add ("id", OdbcType.Int);
2781 dr = cmd.ExecuteReader ();
2782 Assert.IsTrue (dr.Read (), "#G1");
2783 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
2784 Assert.AreEqual (4, dr.GetValue (0), "#G3");
2785 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#G4");
2786 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#G5");
2787 Assert.AreEqual (typeof (decimal), dr.GetFieldType (2), "#G6");
2788 Assert.AreEqual (DBNull.Value, dr.GetValue (2), "#G7");
2789 Assert.IsFalse (dr.Read (), "#G8");
2793 cmd = (OdbcCommand) conn.CreateCommand ();
2794 cmd.CommandText = insert_data;
2795 param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
2796 param.Value = -1000.5678m;
2797 param = cmd.Parameters.Add ("type_numeric2", OdbcType.Numeric);
2798 param.Value = -1000.5678m;
2799 cmd.ExecuteNonQuery ();
2802 cmd = (OdbcCommand) conn.CreateCommand ();
2803 cmd.CommandText = select_data1;
2804 param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
2805 param.Value = -1000.5678m;
2806 param = cmd.Parameters.Add ("id", OdbcType.Int);
2808 dr = cmd.ExecuteReader ();
2809 Assert.IsFalse (dr.Read (), "#H");
2813 cmd = (OdbcCommand) conn.CreateCommand ();
2814 cmd.CommandText = select_data1;
2815 param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
2816 param.Value = -1001;
2817 param = cmd.Parameters.Add ("id", OdbcType.Int);
2819 dr = cmd.ExecuteReader ();
2820 Assert.IsTrue (dr.Read (), "#I1");
2821 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#I2");
2822 Assert.AreEqual (6000, dr.GetValue (0), "#I3");
2823 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#I4");
2824 Assert.AreEqual (-1001m, dr.GetValue (1), "#I5");
2825 Assert.IsFalse (dr.Read (), "#I6");
2829 cmd = (OdbcCommand) conn.CreateCommand ();
2830 cmd.CommandText = select_data2;
2831 param = cmd.Parameters.Add ("type_numeric2", OdbcType.Numeric);
2832 param.Value = -1000.5678m;
2833 param = cmd.Parameters.Add ("id", OdbcType.Int);
2835 dr = cmd.ExecuteReader ();
2836 Assert.IsFalse (dr.Read (), "#J");
2840 cmd = (OdbcCommand) conn.CreateCommand ();
2841 cmd.CommandText = select_data2;
2842 param = cmd.Parameters.Add ("type_numeric2", OdbcType.Numeric);
2843 param.Value = -1000.568m;
2844 param = cmd.Parameters.Add ("id", OdbcType.Int);
2846 dr = cmd.ExecuteReader ();
2847 Assert.IsTrue (dr.Read (), "#K1");
2848 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#K2");
2849 Assert.AreEqual (6000, dr.GetValue (0), "#K3");
2850 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#K4");
2851 Assert.AreEqual (-1000.568m, dr.GetValue (1), "#K5");
2852 Assert.IsFalse (dr.Read (), "#K6");
2856 DBHelper.ExecuteNonQuery (conn, delete_data);
2858 cmd = (OdbcCommand) conn.CreateCommand ();
2859 cmd.CommandText = insert_data;
2860 param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
2861 param.Value = 56789m;
2862 param.Precision = 7;
2864 param = cmd.Parameters.Add ("type_numeric2", OdbcType.Numeric);
2865 param.Value = 98765.5678m;
2866 param.Precision = 10;
2868 cmd.ExecuteNonQuery ();
2871 cmd = (OdbcCommand) conn.CreateCommand ();
2872 cmd.CommandText = select_by_id;
2873 param = cmd.Parameters.Add ("id", OdbcType.Int);
2875 dr = cmd.ExecuteReader ();
2876 Assert.IsTrue (dr.Read (), "#L1");
2877 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#L2");
2878 Assert.AreEqual (6000, dr.GetValue (0), "#L3");
2879 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#L4");
2880 Assert.AreEqual (56789m, dr.GetValue (1), "#L5");
2881 Assert.AreEqual (typeof (decimal), dr.GetFieldType (2), "#L6");
2882 if (ConnectionManager.Singleton.Engine.Type == EngineType.MySQL)
2883 Assert.AreEqual (9876556.780m, dr.GetValue (2), "#L7");
2885 Assert.AreEqual (98765.570m, dr.GetValue (2), "#L7");
2886 Assert.IsFalse (dr.Read (), "#L8");
2890 DBHelper.ExecuteNonQuery (conn, delete_data);
2892 cmd = (OdbcCommand) conn.CreateCommand ();
2893 cmd.CommandText = insert_data;
2894 param = cmd.Parameters.Add ("type_numeric1", OdbcType.Numeric);
2895 param.Value = DBNull.Value;
2896 param = cmd.Parameters.Add ("type_numeric2", OdbcType.Numeric);
2897 param.Value = DBNull.Value;
2898 cmd.ExecuteNonQuery ();
2901 cmd = (OdbcCommand) conn.CreateCommand ();
2902 cmd.CommandText = select_by_id;
2903 param = cmd.Parameters.Add ("id", OdbcType.Int);
2905 dr = cmd.ExecuteReader ();
2906 Assert.IsTrue (dr.Read (), "#M1");
2907 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#M2");
2908 Assert.AreEqual (6000, dr.GetValue (0), "#M3");
2909 Assert.AreEqual (typeof (decimal), dr.GetFieldType (1), "#M4");
2910 if (ConnectionManager.Singleton.Engine.Type == EngineType.MySQL)
2911 Assert.AreEqual (0m, dr.GetValue (1), "#M5");
2913 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#M5");
2914 Assert.AreEqual (typeof (decimal), dr.GetFieldType (2), "#M6");
2915 if (ConnectionManager.Singleton.Engine.Type == EngineType.MySQL)
2916 Assert.AreEqual (0m, dr.GetValue (1), "#M7");
2918 Assert.AreEqual (DBNull.Value, dr.GetValue (2), "#M7");
2919 Assert.IsFalse (dr.Read (), "#M8");
2929 DBHelper.ExecuteNonQuery (conn, delete_data);
2935 public void NVarCharParameterTest ()
2937 string insert_data = "insert into string_family (id, type_nvarchar) values (6000, ?)";
2938 string select_data = "select type_nvarchar from string_family where type_nvarchar = ? and id = ?";
2939 string select_by_id = "select type_nvarchar from string_family where id = ?";
2940 string delete_data = "delete from string_family where id = 6000";
2942 OdbcConnection conn = (OdbcConnection) ConnectionManager.Singleton.Connection;
2945 IDataReader dr = null;
2946 OdbcCommand cmd = null;
2947 OdbcParameter param;
2950 cmd = conn.CreateCommand ();
2951 cmd.CommandText = select_data;
2952 param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar);
2953 param.Value = "nv\u092d\u093e\u0930\u0924r";
2954 param = cmd.Parameters.Add ("id", OdbcType.Int);
2956 dr = cmd.ExecuteReader ();
2957 Assert.IsTrue (dr.Read (), "#A1");
2958 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#A2");
2959 Assert.AreEqual ("nv\u092d\u093e\u0930\u0924r", dr.GetValue (0), "#A3");
2960 Assert.IsFalse (dr.Read (), "#A4");
2964 cmd = conn.CreateCommand ();
2965 cmd.CommandText = select_data;
2966 param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar);
2967 param.Value = "nv\u092d\u093e\u0930\u0924r ";
2968 param = cmd.Parameters.Add ("id", OdbcType.Int);
2970 dr = cmd.ExecuteReader ();
2971 Assert.IsTrue (dr.Read (), "#B1");
2972 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#B2");
2973 Assert.AreEqual ("nv\u092d\u093e\u0930\u0924r ", dr.GetValue (0), "#B3");
2974 Assert.IsFalse (dr.Read (), "#B4");
2978 cmd = conn.CreateCommand ();
2979 cmd.CommandText = select_data;
2980 param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar);
2981 param.Value = string.Empty;
2982 param = cmd.Parameters.Add ("id", OdbcType.Int);
2984 dr = cmd.ExecuteReader ();
2985 Assert.IsTrue (dr.Read (), "#C1");
2986 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#C2");
2987 Assert.AreEqual (string.Empty, dr.GetValue (0), "#C3");
2988 Assert.IsFalse (dr.Read (), "#C4");
2992 cmd = conn.CreateCommand ();
2993 cmd.CommandText = select_by_id;
2994 param = cmd.Parameters.Add ("id", OdbcType.Int);
2996 dr = cmd.ExecuteReader ();
2997 Assert.IsTrue (dr.Read (), "#D1");
2998 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#D2");
2999 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
3000 Assert.IsFalse (dr.Read (), "#D4");
3004 cmd = conn.CreateCommand ();
3005 cmd.CommandText = insert_data;
3006 param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar);
3007 param.Value = "nvarchar ";
3008 cmd.ExecuteNonQuery ();
3011 cmd = conn.CreateCommand ();
3012 cmd.CommandText = select_data;
3013 param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar);
3014 param.Value = "nvarchar ";
3015 param = cmd.Parameters.Add ("id", OdbcType.Int);
3017 dr = cmd.ExecuteReader ();
3018 Assert.IsTrue (dr.Read (), "#E1");
3019 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#E2");
3020 Assert.AreEqual ("nvarchar ", dr.GetValue (0), "#E3");
3021 Assert.IsFalse (dr.Read (), "#E4");
3025 DBHelper.ExecuteNonQuery (conn, delete_data);
3027 cmd = conn.CreateCommand ();
3028 cmd.CommandText = insert_data;
3029 param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar, 6);
3030 param.Value = "nv\u0488rchar";
3031 cmd.ExecuteNonQuery ();
3034 cmd = conn.CreateCommand ();
3035 cmd.CommandText = select_data;
3036 param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar, 6);
3037 param.Value = "nv\u0488rchar";
3038 param = cmd.Parameters.Add ("id", OdbcType.Int);
3040 dr = cmd.ExecuteReader ();
3041 Assert.IsTrue (dr.Read (), "#F1");
3042 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#F2");
3043 Assert.AreEqual ("nv\u0488rch", dr.GetValue (0), "#F3");
3044 Assert.IsFalse (dr.Read (), "#F4");
3048 DBHelper.ExecuteNonQuery (conn, delete_data);
3050 cmd = conn.CreateCommand ();
3051 cmd.CommandText = insert_data;
3052 param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar, 12);
3053 param.Value = "nvarch\u0488r ";
3054 cmd.ExecuteNonQuery ();
3057 cmd = conn.CreateCommand ();
3058 cmd.CommandText = select_data;
3059 param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar, 12);
3060 param.Value = "nvarch\u0488r ";
3061 param = cmd.Parameters.Add ("id", OdbcType.Int);
3063 dr = cmd.ExecuteReader ();
3064 Assert.IsTrue (dr.Read (), "#G1");
3065 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#G2");
3066 Assert.AreEqual ("nvarch\u0488r ", dr.GetValue (0), "#G3");
3067 Assert.IsFalse (dr.Read (), "#G4");
3071 DBHelper.ExecuteNonQuery (conn, delete_data);
3073 cmd = conn.CreateCommand ();
3074 cmd.CommandText = insert_data;
3075 param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar, 12);
3076 param.Value = string.Empty;
3077 cmd.ExecuteNonQuery ();
3080 cmd = conn.CreateCommand ();
3081 cmd.CommandText = select_data;
3082 param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar, 12);
3083 param.Value = string.Empty;
3084 param = cmd.Parameters.Add ("id", OdbcType.Int);
3086 dr = cmd.ExecuteReader ();
3087 Assert.IsTrue (dr.Read (), "#H1");
3088 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#H2");
3089 Assert.AreEqual (string.Empty, dr.GetValue (0), "#H3");
3090 Assert.IsFalse (dr.Read (), "#H4");
3094 DBHelper.ExecuteNonQuery (conn, delete_data);
3096 cmd = conn.CreateCommand ();
3097 cmd.CommandText = insert_data;
3098 param = cmd.Parameters.Add ("type_nvarchar", OdbcType.NVarChar);
3099 param.Value = DBNull.Value;
3100 cmd.ExecuteNonQuery ();
3103 cmd = conn.CreateCommand ();
3104 cmd.CommandText = select_by_id;
3105 param = cmd.Parameters.Add ("id", OdbcType.Int);
3107 dr = cmd.ExecuteReader ();
3108 Assert.IsTrue (dr.Read (), "#I1");
3109 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#I2");
3110 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#I3");
3111 Assert.IsFalse (dr.Read (), "#I4");
3121 DBHelper.ExecuteNonQuery (conn, delete_data);
3127 public void VarBinaryParameterTest ()
3129 string insert_data = "insert into binary_family (id, type_varbinary) values (6000, ?)";
3130 string select_data = "select id, type_varbinary from binary_family where type_varbinary = ? and id = ?";
3131 string select_by_id = "select id, type_varbinary from binary_family where id = ?";
3132 string delete_data = "delete from binary_family where id = 6000";
3134 IDbConnection conn = ConnectionManager.Singleton.Connection;
3137 IDataReader dr = null;
3138 OdbcCommand cmd = null;
3139 OdbcParameter param;
3142 byte [] bytes = new byte [] { 0x30, 0x31, 0x32,
3143 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
3144 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
3145 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33,
3146 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00,
3149 cmd = (OdbcCommand) conn.CreateCommand ();
3150 cmd.CommandText = select_data;
3151 param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
3152 param.Value = bytes;
3153 param = cmd.Parameters.Add ("id", OdbcType.Int);
3155 dr = cmd.ExecuteReader ();
3156 Assert.IsTrue (dr.Read (), "#A1");
3157 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
3158 Assert.AreEqual (1, dr.GetValue (0), "#A3");
3159 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#A4");
3160 Assert.AreEqual (bytes, dr.GetValue (1), "#A5");
3161 Assert.IsFalse (dr.Read (), "#A6");
3165 bytes = new byte [] { 0x00, 0x39, 0x38, 0x37,
3166 0x36, 0x35, 0x00, 0x33, 0x32, 0x31, 0x30,
3167 0x31, 0x32, 0x33, 0x34 };
3169 cmd = (OdbcCommand) conn.CreateCommand ();
3170 cmd.CommandText = select_data;
3171 param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
3172 param.Value = bytes;
3173 param = cmd.Parameters.Add ("id", OdbcType.Int);
3175 dr = cmd.ExecuteReader ();
3176 Assert.IsTrue (dr.Read (), "#B1");
3177 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
3178 Assert.AreEqual (2, dr.GetValue (0), "#B3");
3179 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#B4");
3180 Assert.AreEqual (bytes, dr.GetValue (1), "#B5");
3181 Assert.IsFalse (dr.Read (), "#B6");
3185 bytes = new byte [0];
3187 cmd = (OdbcCommand) conn.CreateCommand ();
3188 cmd.CommandText = select_data;
3189 param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
3190 param.Value = bytes;
3191 param = cmd.Parameters.Add ("id", OdbcType.Int);
3193 dr = cmd.ExecuteReader ();
3194 Assert.IsTrue (dr.Read (), "#C1");
3195 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
3196 Assert.AreEqual (3, dr.GetValue (0), "#C3");
3197 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#C4");
3198 Assert.AreEqual (bytes, dr.GetValue (1), "#C5");
3199 Assert.IsFalse (dr.Read (), "#C6");
3203 cmd = (OdbcCommand) conn.CreateCommand ();
3204 cmd.CommandText = select_by_id;
3205 param = cmd.Parameters.Add ("id", OdbcType.Int);
3207 dr = cmd.ExecuteReader ();
3208 Assert.IsTrue (dr.Read (), "#D1");
3209 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
3210 Assert.AreEqual (4, dr.GetValue (0), "#D3");
3211 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#D4");
3212 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
3213 Assert.IsFalse (dr.Read (), "#D6");
3217 bytes = new byte [0];
3219 cmd = (OdbcCommand) conn.CreateCommand ();
3220 cmd.CommandText = insert_data;
3221 param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
3222 param.Value = bytes;
3223 cmd.ExecuteNonQuery ();
3226 cmd = (OdbcCommand) conn.CreateCommand ();
3227 cmd.CommandText = select_data;
3228 param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
3229 param.Value = bytes;
3230 param = cmd.Parameters.Add ("id", OdbcType.Int);
3232 dr = cmd.ExecuteReader ();
3233 Assert.IsTrue (dr.Read (), "#E1");
3234 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
3235 Assert.AreEqual (6000, dr.GetValue (0), "#E3");
3236 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#E4");
3237 Assert.AreEqual (bytes, dr.GetValue (1), "#E5");
3238 Assert.IsFalse (dr.Read (), "#E6");
3242 DBHelper.ExecuteNonQuery (conn, delete_data);
3244 bytes = new byte [] { 0x05 };
3246 cmd = (OdbcCommand) conn.CreateCommand ();
3247 cmd.CommandText = insert_data;
3248 param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
3249 param.Value = bytes;
3250 cmd.ExecuteNonQuery ();
3253 cmd = (OdbcCommand) conn.CreateCommand ();
3254 cmd.CommandText = select_data;
3255 param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
3256 param.Value = bytes;
3257 param = cmd.Parameters.Add ("id", OdbcType.Int);
3259 dr = cmd.ExecuteReader ();
3260 Assert.IsTrue (dr.Read (), "#F1");
3261 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
3262 Assert.AreEqual (6000, dr.GetValue (0), "#F3");
3263 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#F4");
3264 Assert.AreEqual (bytes, dr.GetValue (1), "#F5");
3265 Assert.IsFalse (dr.Read (), "#F6");
3269 DBHelper.ExecuteNonQuery (conn, delete_data);
3271 bytes = new byte [] { 0x34, 0x00, 0x32 };
3273 cmd = (OdbcCommand) conn.CreateCommand ();
3274 cmd.CommandText = insert_data;
3275 param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
3276 param.Value = bytes;
3277 cmd.ExecuteNonQuery ();
3280 cmd = (OdbcCommand) conn.CreateCommand ();
3281 cmd.CommandText = select_data;
3282 param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
3283 param.Value = bytes;
3284 param = cmd.Parameters.Add ("id", OdbcType.Int);
3286 dr = cmd.ExecuteReader ();
3287 Assert.IsTrue (dr.Read (), "#G1");
3288 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
3289 Assert.AreEqual (6000, dr.GetValue (0), "#G3");
3290 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#G4");
3291 Assert.AreEqual (bytes, dr.GetValue (1), "#G5");
3292 Assert.IsFalse (dr.Read (), "#G6");
3296 DBHelper.ExecuteNonQuery (conn, delete_data);
3298 bytes = new byte [] { 0x34, 0x00, 0x32, 0x05, 0x07, 0x13 };
3300 cmd = (OdbcCommand) conn.CreateCommand ();
3301 cmd.CommandText = insert_data;
3302 param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary, 4);
3303 param.Value = bytes;
3304 cmd.ExecuteNonQuery ();
3307 cmd = (OdbcCommand) conn.CreateCommand ();
3308 cmd.CommandText = select_data;
3309 param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary, 4);
3310 param.Value = bytes;
3311 param = cmd.Parameters.Add ("id", OdbcType.Int);
3313 dr = cmd.ExecuteReader ();
3314 Assert.IsTrue (dr.Read (), "#H1");
3315 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
3316 Assert.AreEqual (6000, dr.GetValue (0), "#H3");
3317 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#H4");
3318 Assert.AreEqual (new byte [] { 0x34, 0x00, 0x32, 0x05 }, dr.GetValue (1), "#H5");
3319 Assert.IsFalse (dr.Read (), "#H6");
3323 DBHelper.ExecuteNonQuery (conn, delete_data);
3325 cmd = (OdbcCommand) conn.CreateCommand ();
3326 cmd.CommandText = insert_data;
3327 param = cmd.Parameters.Add ("type_varbinary", OdbcType.VarBinary);
3328 param.Value = DBNull.Value;
3329 cmd.ExecuteNonQuery ();
3332 cmd = (OdbcCommand) conn.CreateCommand ();
3333 cmd.CommandText = select_by_id;
3334 param = cmd.Parameters.Add ("id", OdbcType.Int);
3336 dr = cmd.ExecuteReader ();
3337 Assert.IsTrue (dr.Read (), "#I1");
3338 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#I2");
3339 Assert.AreEqual (6000, dr.GetValue (0), "#I3");
3340 Assert.AreEqual (typeof (byte []), dr.GetFieldType (1), "#I4");
3341 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#I5");
3342 Assert.IsFalse (dr.Read (), "#I6");
3352 DBHelper.ExecuteNonQuery (conn, delete_data);
3358 public void VarCharParameterTest ()
3360 string insert_data = "insert into string_family (id, type_varchar) values (6000, ?)";
3361 string select_data = "select type_varchar from string_family where type_varchar = ? and id = ?";
3362 string select_by_id = "select type_varchar from string_family where id = ?";
3363 string delete_data = "delete from string_family where id = 6000";
3365 OdbcConnection conn = (OdbcConnection) ConnectionManager.Singleton.Connection;
3368 IDataReader dr = null;
3369 OdbcCommand cmd = null;
3370 OdbcParameter param;
3373 cmd = conn.CreateCommand ();
3374 cmd.CommandText = select_data;
3375 param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar);
3376 param.Value = "varchar";
3377 param = cmd.Parameters.Add ("id", OdbcType.Int);
3379 dr = cmd.ExecuteReader ();
3380 Assert.IsTrue (dr.Read (), "#A1");
3381 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#A2");
3382 Assert.AreEqual ("varchar", dr.GetValue (0), "#A3");
3383 Assert.IsFalse (dr.Read (), "#A4");
3387 cmd = conn.CreateCommand ();
3388 cmd.CommandText = select_data;
3389 param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar);
3390 param.Value = "varchar ";
3391 param = cmd.Parameters.Add ("id", OdbcType.Int);
3393 dr = cmd.ExecuteReader ();
3394 Assert.IsTrue (dr.Read (), "#B1");
3395 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#B2");
3396 Assert.AreEqual ("varchar ", dr.GetValue (0), "#B3");
3397 Assert.IsFalse (dr.Read (), "#B4");
3401 cmd = conn.CreateCommand ();
3402 cmd.CommandText = select_data;
3403 param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar);
3404 param.Value = string.Empty;
3405 param = cmd.Parameters.Add ("id", OdbcType.Int);
3407 dr = cmd.ExecuteReader ();
3408 Assert.IsTrue (dr.Read (), "#C1");
3409 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#C2");
3410 Assert.AreEqual (string.Empty, dr.GetValue (0), "#C3");
3411 Assert.IsFalse (dr.Read (), "#C4");
3415 cmd = conn.CreateCommand ();
3416 cmd.CommandText = select_by_id;
3417 param = cmd.Parameters.Add ("id", OdbcType.Int);
3419 dr = cmd.ExecuteReader ();
3420 Assert.IsTrue (dr.Read (), "#D1");
3421 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#D2");
3422 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
3423 Assert.IsFalse (dr.Read (), "#D4");
3427 cmd = conn.CreateCommand ();
3428 cmd.CommandText = insert_data;
3429 param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar, 30);
3430 param.Value = "varchar ";
3431 cmd.ExecuteNonQuery ();
3434 cmd = conn.CreateCommand ();
3435 cmd.CommandText = select_data;
3436 param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar);
3437 param.Value = "varchar ";
3438 param = cmd.Parameters.Add ("id", OdbcType.Int);
3440 dr = cmd.ExecuteReader ();
3441 Assert.IsTrue (dr.Read (), "#E1");
3442 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#E2");
3443 Assert.AreEqual ("varchar ", dr.GetValue (0), "#E3");
3444 Assert.IsFalse (dr.Read (), "#E4");
3448 DBHelper.ExecuteNonQuery (conn, delete_data);
3450 cmd = conn.CreateCommand ();
3451 cmd.CommandText = insert_data;
3452 param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar, 3);
3453 param.Value = "vchar";
3454 cmd.ExecuteNonQuery ();
3457 cmd = conn.CreateCommand ();
3458 cmd.CommandText = select_data;
3459 param = cmd.Parameters.Add ("type_nvarchar", OdbcType.VarChar, 3);
3460 param.Value = "vcharxzer";
3461 param = cmd.Parameters.Add ("id", OdbcType.Int);
3463 dr = cmd.ExecuteReader ();
3464 Assert.IsTrue (dr.Read (), "#F1");
3465 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#F2");
3466 Assert.AreEqual ("vch", dr.GetValue (0), "#F3");
3467 Assert.IsFalse (dr.Read (), "#F4");
3471 DBHelper.ExecuteNonQuery (conn, delete_data);
3473 cmd = conn.CreateCommand ();
3474 cmd.CommandText = insert_data;
3475 param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar, 3);
3476 param.Value = string.Empty;
3477 cmd.ExecuteNonQuery ();
3480 cmd = conn.CreateCommand ();
3481 cmd.CommandText = select_data;
3482 param = cmd.Parameters.Add ("type_nvarchar", OdbcType.VarChar, 3);
3483 param.Value = string.Empty;
3484 param = cmd.Parameters.Add ("id", OdbcType.Int);
3486 dr = cmd.ExecuteReader ();
3487 Assert.IsTrue (dr.Read (), "#G1");
3488 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#G2");
3489 Assert.AreEqual (string.Empty, dr.GetValue (0), "#G3");
3490 Assert.IsFalse (dr.Read (), "#G4");
3494 DBHelper.ExecuteNonQuery (conn, delete_data);
3496 cmd = conn.CreateCommand ();
3497 cmd.CommandText = insert_data;
3498 param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar, 5);
3499 param.Value = DBNull.Value;
3500 cmd.ExecuteNonQuery ();
3503 cmd = conn.CreateCommand ();
3504 cmd.CommandText = select_by_id;
3505 param = cmd.Parameters.Add ("id", OdbcType.Int);
3507 dr = cmd.ExecuteReader ();
3508 Assert.IsTrue (dr.Read (), "#H1");
3509 Assert.AreEqual (typeof (string), dr.GetFieldType (0), "#H2");
3510 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#H3");
3511 Assert.IsFalse (dr.Read (), "#H4");
3521 DBHelper.ExecuteNonQuery (conn, delete_data);
3527 public void RealParameterTest ()
3529 string insert_data = "insert into numeric_family (id, type_float) values (6000, ?)";
3530 string select_data = "select id, type_float from numeric_family where type_float = ? and id = ?";
3531 string select_by_id = "select id, type_float from numeric_family where id = ?";
3532 string delete_data = "delete from numeric_family where id = 6000";
3534 IDbConnection conn = ConnectionManager.Singleton.Connection;
3537 IDataReader dr = null;
3538 OdbcCommand cmd = null;
3539 OdbcParameter param;
3543 cmd = (OdbcCommand) conn.CreateCommand ();
3544 cmd.CommandText = select_by_id;
3545 param = cmd.Parameters.Add ("id", OdbcType.Int);
3547 dr = cmd.ExecuteReader ();
3548 Assert.IsTrue (dr.Read (), "#D1");
3549 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
3550 Assert.AreEqual (1, dr.GetValue (0), "#D3");
3551 Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#D4");
3552 Assert.AreEqual (3.40E+38, dr.GetValue (1), "#D5");
3553 Assert.IsFalse (dr.Read (), "#D6");
3558 cmd = (OdbcCommand) conn.CreateCommand ();
3559 cmd.CommandText = select_data;
3560 param = cmd.Parameters.Add ("type_float", OdbcType.Real);
3561 param.Value = 3.40E+38;
3562 param = cmd.Parameters.Add ("id", OdbcType.Int);
3564 dr = cmd.ExecuteReader ();
3565 Assert.IsTrue (dr.Read (), "#A1");
3566 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
3567 Assert.AreEqual (1, dr.GetValue (0), "#A2");
3568 Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#A3");
3569 Assert.AreEqual (3.40E+38, dr.GetValue (1), "#A4");
3570 Assert.IsFalse (dr.Read (), "#A5");
3574 cmd = (OdbcCommand) conn.CreateCommand ();
3575 cmd.CommandText = select_data;
3576 param = cmd.Parameters.Add ("type_float", OdbcType.Real);
3577 param.Value = -3.40E+38;
3578 param = cmd.Parameters.Add ("id", OdbcType.Int);
3580 dr = cmd.ExecuteReader ();
3581 Assert.IsTrue (dr.Read (), "#B1");
3582 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
3583 Assert.AreEqual (2, dr.GetValue (0), "#B2");
3584 Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#B3");
3585 Assert.AreEqual (-3.40E+38, dr.GetValue (1), "#B4");
3586 Assert.IsFalse (dr.Read (), "#B5");
3590 cmd = (OdbcCommand) conn.CreateCommand ();
3591 cmd.CommandText = select_data;
3592 param = cmd.Parameters.Add ("type_float", OdbcType.Real);
3594 param = cmd.Parameters.Add ("id", OdbcType.Int);
3596 dr = cmd.ExecuteReader ();
3597 Assert.IsTrue (dr.Read (), "#C1");
3598 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
3599 Assert.AreEqual (3, dr.GetValue (0), "#C2");
3600 Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#C3");
3601 Assert.AreEqual (0F, dr.GetValue (1), "#C4");
3602 Assert.IsFalse (dr.Read (), "#C5");
3606 cmd = (OdbcCommand) conn.CreateCommand ();
3607 cmd.CommandText = select_by_id;
3608 param = cmd.Parameters.Add ("id", OdbcType.Int);
3610 dr = cmd.ExecuteReader ();
3611 Assert.IsTrue (dr.Read (), "#D1");
3612 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
3613 Assert.AreEqual (4, dr.GetValue (0), "#D3");
3614 Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#D4");
3615 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
3616 Assert.IsFalse (dr.Read (), "#D6");
3620 cmd = (OdbcCommand) conn.CreateCommand ();
3621 cmd.CommandText = insert_data;
3622 param = cmd.Parameters.Add ("type_float", OdbcType.Real);
3623 param.Value = 3.40E+38;
3624 cmd.ExecuteNonQuery ();
3627 cmd = (OdbcCommand) conn.CreateCommand ();
3628 cmd.CommandText = select_by_id;
3629 param = cmd.Parameters.Add ("id", OdbcType.Int);
3631 dr = cmd.ExecuteReader ();
3632 Assert.IsTrue (dr.Read (), "#E1");
3633 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#E2");
3634 Assert.AreEqual (6000, dr.GetValue (0), "#E3");
3635 Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#E4");
3636 Assert.AreEqual (3.40E+38, dr.GetValue (1), "#E5");
3637 Assert.IsFalse (dr.Read (), "#E6");
3641 DBHelper.ExecuteNonQuery (conn, delete_data);
3643 cmd = (OdbcCommand) conn.CreateCommand ();
3644 cmd.CommandText = insert_data;
3645 param = cmd.Parameters.Add ("type_float", OdbcType.Real);
3646 param.Value = -3.40E+38;
3647 cmd.ExecuteNonQuery ();
3650 cmd = (OdbcCommand) conn.CreateCommand ();
3651 cmd.CommandText = select_by_id;
3652 param = cmd.Parameters.Add ("id", OdbcType.Int);
3654 dr = cmd.ExecuteReader ();
3655 Assert.IsTrue (dr.Read (), "#F1");
3656 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#F2");
3657 Assert.AreEqual (6000, dr.GetValue (0), "#F3");
3658 Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#F4");
3659 Assert.AreEqual (-3.40E+38, dr.GetValue (1), "#F5");
3660 Assert.IsFalse (dr.Read (), "#F6");
3664 DBHelper.ExecuteNonQuery (conn, delete_data);
3666 cmd = (OdbcCommand) conn.CreateCommand ();
3667 cmd.CommandText = insert_data;
3668 param = cmd.Parameters.Add ("type_float", OdbcType.Real);
3670 cmd.ExecuteNonQuery ();
3673 cmd = (OdbcCommand) conn.CreateCommand ();
3674 cmd.CommandText = select_by_id;
3675 param = cmd.Parameters.Add ("id", OdbcType.Int);
3677 dr = cmd.ExecuteReader ();
3678 Assert.IsTrue (dr.Read (), "#G1");
3679 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#G2");
3680 Assert.AreEqual (6000, dr.GetValue (0), "#G3");
3681 Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#G4");
3682 Assert.AreEqual (0F, dr.GetValue (1), "#G5");
3683 Assert.IsFalse (dr.Read (), "#G6");
3687 DBHelper.ExecuteNonQuery (conn, delete_data);
3689 cmd = (OdbcCommand) conn.CreateCommand ();
3690 cmd.CommandText = insert_data;
3691 param = cmd.Parameters.Add ("type_float", OdbcType.Real);
3692 param.Value = DBNull.Value;
3693 cmd.ExecuteNonQuery ();
3696 cmd = (OdbcCommand) conn.CreateCommand ();
3697 cmd.CommandText = select_by_id;
3698 param = cmd.Parameters.Add ("id", OdbcType.Int);
3700 dr = cmd.ExecuteReader ();
3701 Assert.IsTrue (dr.Read (), "#H1");
3702 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#H2");
3703 Assert.AreEqual (6000, dr.GetValue (0), "#H3");
3704 Assert.AreEqual (typeof (float), dr.GetFieldType (1), "#H4");
3705 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#H5");
3706 Assert.IsFalse (dr.Read (), "#H6");
3716 DBHelper.ExecuteNonQuery (conn, delete_data);
3722 public void SmallDateTimeParameterTest ()
3724 string insert_data = "insert into datetime_family (id, type_smalldatetime) values (6000, ?)";
3725 string select_data = "select id, type_smalldatetime from datetime_family where type_smalldatetime = ? and id = ?";
3726 string select_by_id = "select id, type_smalldatetime from datetime_family where id = ?";
3727 string delete_data = "delete from datetime_family where id = 6000";
3729 IDbConnection conn = ConnectionManager.Singleton.Connection;
3732 IDataReader dr = null;
3733 OdbcCommand cmd = null;
3734 OdbcParameter param;
3737 DateTime date = DateTime.Parse ("2037-12-31 23:59:00");
3739 cmd = (OdbcCommand) conn.CreateCommand ();
3740 cmd.CommandText = select_data;
3741 param = cmd.Parameters.Add ("type_smalldatetime", OdbcType.SmallDateTime);
3743 param = cmd.Parameters.Add ("id", OdbcType.Int);
3745 dr = cmd.ExecuteReader ();
3746 Assert.IsTrue (dr.Read (), "#A1");
3747 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
3748 Assert.AreEqual (1, dr.GetValue (0), "#A3");
3749 Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#A4");
3750 Assert.AreEqual (date, dr.GetValue (1), "#A5");
3751 Assert.IsFalse (dr.Read (), "#A6");
3755 cmd = (OdbcCommand) conn.CreateCommand ();
3756 cmd.CommandText = select_by_id;
3757 param = cmd.Parameters.Add ("id", OdbcType.Int);
3759 dr = cmd.ExecuteReader ();
3760 Assert.IsTrue (dr.Read (), "#B1");
3761 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
3762 Assert.AreEqual (4, dr.GetValue (0), "#B3");
3763 Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#B4");
3764 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#B5");
3765 Assert.IsFalse (dr.Read (), "#B6");
3769 date = new DateTime (1973, 8, 13, 17, 55, 00);
3771 cmd = (OdbcCommand) conn.CreateCommand ();
3772 cmd.CommandText = insert_data;
3773 param = cmd.Parameters.Add ("type_smalldatetime", OdbcType.SmallDateTime);
3775 cmd.ExecuteNonQuery ();
3778 cmd = (OdbcCommand) conn.CreateCommand ();
3779 cmd.CommandText = select_data;
3780 param = cmd.Parameters.Add ("type_smalldatetime", OdbcType.SmallDateTime);
3782 param = cmd.Parameters.Add ("id", OdbcType.Int);
3784 dr = cmd.ExecuteReader ();
3785 Assert.IsTrue (dr.Read (), "#C1");
3786 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
3787 Assert.AreEqual (6000, dr.GetValue (0), "#C3");
3788 Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#C4");
3789 Assert.AreEqual (date, dr.GetValue (1), "#C5");
3790 Assert.IsFalse (dr.Read (), "#C6");
3794 DBHelper.ExecuteNonQuery (conn, delete_data);
3796 cmd = (OdbcCommand) conn.CreateCommand ();
3797 cmd.CommandText = insert_data;
3798 param = cmd.Parameters.Add ("type_smalldatetime", OdbcType.SmallDateTime);
3799 param.Value = DBNull.Value;
3800 cmd.ExecuteNonQuery ();
3803 cmd = (OdbcCommand) conn.CreateCommand ();
3804 cmd.CommandText = select_by_id;
3805 param = cmd.Parameters.Add ("id", OdbcType.Int);
3807 dr = cmd.ExecuteReader ();
3808 Assert.IsTrue (dr.Read (), "#D1");
3809 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
3810 Assert.AreEqual (6000, dr.GetValue (0), "#D3");
3811 Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#D4");
3812 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
3813 Assert.IsFalse (dr.Read (), "#D6");
3824 DBHelper.ExecuteNonQuery (conn, delete_data);
3830 public void DateTimeParameterTest ()
3832 string insert_data = "insert into datetime_family (id, type_datetime) values (6000, ?)";
3833 string select_data = "select id, type_datetime from datetime_family where type_datetime = ? and id = ?";
3834 string select_by_id = "select id, type_datetime from datetime_family where id = ?";
3835 string delete_data = "delete from datetime_family where id = 6000";
3837 OdbcConnection conn = (OdbcConnection) ConnectionManager.Singleton.Connection;
3840 IDataReader dr = null;
3841 OdbcCommand cmd = null;
3842 OdbcParameter param;
3845 DateTime date = DateTime.ParseExact ("9999-12-31 23:59:59.997",
3846 "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture);
3848 cmd = conn.CreateCommand ();
3849 cmd.CommandText = select_data;
3850 param = cmd.Parameters.Add ("type_datetime", OdbcType.DateTime);
3852 param = cmd.Parameters.Add ("id", OdbcType.Int);
3854 dr = cmd.ExecuteReader ();
3855 Assert.IsTrue (dr.Read (), "#A1");
3856 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#A2");
3857 Assert.AreEqual (1, dr [0], "#A3");
3858 Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#A4");
3859 if (ConnectionManager.Singleton.Engine.SupportsMicroseconds)
3860 Assert.AreEqual (date, dr [1], "#A5");
3862 Assert.AreEqual (new DateTime (9999, 12, 31, 23, 59, 59), dr [1], "#A5");
3863 Assert.IsFalse (dr.Read (), "#A6");
3867 cmd = conn.CreateCommand ();
3868 cmd.CommandText = select_by_id;
3869 param = cmd.Parameters.Add ("id", OdbcType.Int);
3871 dr = cmd.ExecuteReader ();
3872 Assert.IsTrue (dr.Read (), "#B1");
3873 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#B2");
3874 Assert.AreEqual (4, dr.GetValue (0), "#B3");
3875 Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#B4");
3876 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#B5");
3877 Assert.IsFalse (dr.Read (), "#B6");
3881 date = new DateTime (1973, 8, 13, 17, 54, 33, 953);
3883 cmd = conn.CreateCommand ();
3884 cmd.CommandText = insert_data;
3885 param = cmd.Parameters.Add ("type_datetime", OdbcType.DateTime);
3887 cmd.ExecuteNonQuery ();
3890 cmd = conn.CreateCommand ();
3891 cmd.CommandText = select_data;
3892 param = cmd.Parameters.Add ("type_datetime", OdbcType.DateTime);
3894 param = cmd.Parameters.Add ("id", OdbcType.Int);
3896 dr = cmd.ExecuteReader ();
3897 Assert.IsTrue (dr.Read (), "#C1");
3898 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#C2");
3899 Assert.AreEqual (6000, dr.GetValue (0), "#C3");
3900 Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#C4");
3901 if (ConnectionManager.Singleton.Engine.SupportsMicroseconds)
3902 Assert.AreEqual (date, dr.GetValue (1), "#C5");
3904 Assert.AreEqual (new DateTime (1973, 8, 13, 17, 54, 33), dr.GetValue (1), "#C5");
3905 Assert.IsFalse (dr.Read (), "#C6");
3909 DBHelper.ExecuteNonQuery (conn, delete_data);
3911 cmd = conn.CreateCommand ();
3912 cmd.CommandText = insert_data;
3913 param = cmd.Parameters.Add ("type_datetime", OdbcType.DateTime);
3914 param.Value = DBNull.Value;
3915 cmd.ExecuteNonQuery ();
3918 cmd = conn.CreateCommand ();
3919 cmd.CommandText = select_by_id;
3920 param = cmd.Parameters.Add ("id", OdbcType.Int);
3922 dr = cmd.ExecuteReader ();
3923 Assert.IsTrue (dr.Read (), "#D1");
3924 Assert.AreEqual (typeof (int), dr.GetFieldType (0), "#D2");
3925 Assert.AreEqual (6000, dr.GetValue (0), "#D3");
3926 Assert.AreEqual (typeof (DateTime), dr.GetFieldType (1), "#D4");
3927 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D5");
3928 Assert.IsFalse (dr.Read (), "#D6");
3938 DBHelper.ExecuteNonQuery (conn, delete_data);
3944 public void DateParameterTest ()
3946 string insert_data = "insert into datetime_family (id, type_date) values (6000, ?)";
3947 string select_data = "select type_date from datetime_family where type_date = ? and id = 1";
3948 string select_by_id = "select type_date from datetime_family where id = ?";
3949 string delete_data = "delete from datetime_family where id = 6000";
3951 OdbcConnection conn = (OdbcConnection) ConnectionManager.Singleton.Connection;
3954 IDataReader dr = null;
3955 OdbcCommand cmd = null;
3956 OdbcParameter param;
3959 if (!ConnectionManager.Singleton.Engine.SupportsDate)
3960 Assert.Ignore ("Date test does not apply to the current driver (" + conn.Driver + ").");
3962 DateTime date = new DateTime (9999, 12, 31);
3964 cmd = conn.CreateCommand ();
3965 cmd.CommandText = select_data;
3966 param = cmd.Parameters.Add ("type_date", OdbcType.DateTime);
3968 param = cmd.Parameters.Add ("id", OdbcType.Int);
3970 dr = cmd.ExecuteReader ();
3971 Assert.IsTrue (dr.Read (), "#A1");
3972 Assert.AreEqual (typeof (DateTime), dr.GetFieldType (0), "#A2");
3973 Assert.AreEqual (date, dr.GetValue (0), "#A3");
3974 Assert.IsFalse (dr.Read (), "#A4");
3978 cmd = conn.CreateCommand ();
3979 cmd.CommandText = select_by_id;
3980 param = cmd.Parameters.Add ("id", OdbcType.Int);
3982 dr = cmd.ExecuteReader ();
3983 Assert.IsTrue (dr.Read (), "#B1");
3984 Assert.AreEqual (typeof (DateTime), dr.GetFieldType (0), "#B2");
3985 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#B3");
3986 Assert.IsFalse (dr.Read (), "#B4");
3990 date = new DateTime (2004, 2, 21, 4, 50, 7);
3992 cmd = conn.CreateCommand ();
3993 cmd.CommandText = insert_data;
3994 param = cmd.Parameters.Add ("type_date", OdbcType.Date);
3996 cmd.ExecuteNonQuery ();
3999 cmd = conn.CreateCommand ();
4000 cmd.CommandText = select_by_id;
4001 param = cmd.Parameters.Add ("id", OdbcType.Int);
4003 dr = cmd.ExecuteReader ();
4004 Assert.IsTrue (dr.Read (), "#C1");
4005 Assert.AreEqual (typeof (DateTime), dr.GetFieldType (0), "#C2");
4006 Assert.AreEqual (new DateTime (2004, 2, 21), dr.GetValue (0), "#C3");
4007 Assert.IsFalse (dr.Read (), "#C4");
4011 DBHelper.ExecuteNonQuery (conn, delete_data);
4013 cmd = conn.CreateCommand ();
4014 cmd.CommandText = insert_data;
4015 param = cmd.Parameters.Add ("type_date", OdbcType.Date);
4016 param.Value = DBNull.Value;
4017 cmd.ExecuteNonQuery ();
4020 cmd = conn.CreateCommand ();
4021 cmd.CommandText = select_by_id;
4022 param = cmd.Parameters.Add ("id", OdbcType.Int);
4024 dr = cmd.ExecuteReader ();
4025 Assert.IsTrue (dr.Read (), "#D1");
4026 Assert.AreEqual (typeof (DateTime), dr.GetFieldType (0), "#D2");
4027 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
4028 Assert.IsFalse (dr.Read (), "#D4");
4038 DBHelper.ExecuteNonQuery (conn, delete_data);
4044 public void TimeParameterTest ()
4046 string insert_data = "insert into datetime_family (id, type_time) values (6000, ?)";
4047 string select_data = "select type_time from datetime_family where type_time = ? and id = 1";
4048 string select_by_id = "select type_time from datetime_family where id = ?";
4049 string delete_data = "delete from datetime_family where id = 6000";
4051 OdbcConnection conn = (OdbcConnection) ConnectionManager.Singleton.Connection;
4054 IDataReader dr = null;
4055 OdbcCommand cmd = null;
4056 OdbcParameter param;
4059 if (!ConnectionManager.Singleton.Engine.SupportsTime)
4060 Assert.Ignore ("Time test does not apply to the current driver (" + conn.Driver + ").");
4062 TimeSpan time = ConnectionManager.Singleton.Engine.SupportsMicroseconds ?
4063 new TimeSpan (23, 58, 59, 953) : new TimeSpan (23, 58, 59);
4065 cmd = conn.CreateCommand ();
4066 cmd.CommandText = select_data;
4067 param = cmd.Parameters.Add ("type_time", OdbcType.Time);
4069 param = cmd.Parameters.Add ("id", OdbcType.Int);
4071 dr = cmd.ExecuteReader ();
4072 Assert.IsTrue (dr.Read (), "#A1");
4073 Assert.AreEqual (typeof (TimeSpan), dr.GetFieldType (0), "#A2");
4074 Assert.AreEqual (time, dr.GetValue (0), "#A3");
4075 Assert.IsFalse (dr.Read (), "#A4");
4079 cmd = conn.CreateCommand ();
4080 cmd.CommandText = select_by_id;
4081 param = cmd.Parameters.Add ("id", OdbcType.Int);
4083 dr = cmd.ExecuteReader ();
4084 Assert.IsTrue (dr.Read (), "#B1");
4085 Assert.AreEqual (typeof (TimeSpan), dr.GetFieldType (0), "#B2");
4086 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#B3");
4087 Assert.IsFalse (dr.Read (), "#B4");
4091 time = new TimeSpan (23, 56, 43);
4093 cmd = conn.CreateCommand ();
4094 cmd.CommandText = insert_data;
4095 param = cmd.Parameters.Add ("type_time", OdbcType.Time);
4097 cmd.ExecuteNonQuery ();
4100 cmd = conn.CreateCommand ();
4101 cmd.CommandText = select_by_id;
4102 param = cmd.Parameters.Add ("id", OdbcType.Int);
4104 dr = cmd.ExecuteReader ();
4105 Assert.IsTrue (dr.Read (), "#C1");
4106 Assert.AreEqual (typeof (TimeSpan), dr.GetFieldType (0), "#C2");
4107 Assert.AreEqual (time, dr.GetValue (0), "#C3");
4108 Assert.IsFalse (dr.Read (), "#C4");
4112 DBHelper.ExecuteNonQuery (conn, delete_data);
4114 cmd = conn.CreateCommand ();
4115 cmd.CommandText = insert_data;
4116 param = cmd.Parameters.Add ("type_time", OdbcType.Date);
4117 param.Value = DBNull.Value;
4118 cmd.ExecuteNonQuery ();
4121 cmd = conn.CreateCommand ();
4122 cmd.CommandText = select_by_id;
4123 param = cmd.Parameters.Add ("id", OdbcType.Int);
4125 dr = cmd.ExecuteReader ();
4126 Assert.IsTrue (dr.Read (), "#D1");
4127 Assert.AreEqual (typeof (TimeSpan), dr.GetFieldType (0), "#D2");
4128 Assert.AreEqual (DBNull.Value, dr.GetValue (0), "#D3");
4129 Assert.IsFalse (dr.Read (), "#D4");
4139 DBHelper.ExecuteNonQuery (conn, delete_data);
4145 public void UniqueIdentifierParameterTest ()
4147 string insert_data = "insert into string_family (id, type_guid) values (6000, ?)";
4148 string select_data = "select id, type_guid from string_family where type_guid = ? and id = ?";
4149 string select_by_id = "select id, type_guid from string_family where id = ?";
4150 string delete_data = "delete from string_family where id = 6000";
4152 OdbcConnection conn = (OdbcConnection) ConnectionManager.Singleton.Connection;
4155 IDataReader dr = null;
4156 OdbcCommand cmd = null;
4157 OdbcParameter param;
4160 if (!ConnectionManager.Singleton.Engine.SupportsUniqueIdentifier)
4161 Assert.Ignore ("UniqueIdentifier test does not apply to the current driver (" + conn.Driver + ").");
4163 cmd = conn.CreateCommand ();
4164 cmd.CommandText = select_data;
4165 param = cmd.Parameters.Add ("type_guid", OdbcType.UniqueIdentifier);
4166 param.Value = new Guid ("d222a130-6383-4d36-ac5e-4e6b2591aabf");
4167 param = cmd.Parameters.Add ("id", OdbcType.Int);
4169 dr = cmd.ExecuteReader ();
4170 Assert.IsTrue (dr.Read (), "#A1");
4171 Assert.AreEqual (1, dr.GetValue (0), "#A2");
4172 Assert.AreEqual (new Guid ("d222a130-6383-4d36-ac5e-4e6b2591aabf"), dr.GetValue (1), "#A3");
4173 Assert.IsFalse (dr.Read (), "#A4");
4177 cmd = conn.CreateCommand ();
4178 cmd.CommandText = select_by_id;
4179 param = cmd.Parameters.Add ("id", OdbcType.Int);
4181 dr = cmd.ExecuteReader ();
4182 Assert.IsTrue (dr.Read (), "#B1");
4183 Assert.AreEqual (4, dr.GetValue (0), "#B2");
4184 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#B3");
4185 Assert.IsFalse (dr.Read (), "#B4");
4189 cmd = (OdbcCommand) conn.CreateCommand ();
4190 cmd.CommandText = insert_data;
4191 param = cmd.Parameters.Add ("type_guid", OdbcType.UniqueIdentifier);
4192 param.Value = new Guid ("e222a130-6383-4d36-ac5e-4e6b2591aabe");
4193 cmd.ExecuteNonQuery ();
4196 cmd = conn.CreateCommand ();
4197 cmd.CommandText = select_data;
4198 param = cmd.Parameters.Add ("type_guid", OdbcType.UniqueIdentifier);
4199 param.Value = new Guid ("e222a130-6383-4d36-ac5e-4e6b2591aabe");
4200 param = cmd.Parameters.Add ("id", OdbcType.Int);
4202 dr = cmd.ExecuteReader ();
4203 Assert.IsTrue (dr.Read (), "#C1");
4204 Assert.AreEqual (6000, dr.GetValue (0), "#C2");
4205 Assert.AreEqual (new Guid ("e222a130-6383-4d36-ac5e-4e6b2591aabe"), dr.GetValue (1), "#C3");
4206 Assert.IsFalse (dr.Read (), "#C4");
4210 DBHelper.ExecuteNonQuery (conn, delete_data);
4212 cmd = (OdbcCommand) conn.CreateCommand ();
4213 cmd.CommandText = insert_data;
4214 param = cmd.Parameters.Add ("type_guid", OdbcType.UniqueIdentifier);
4215 param.Value = DBNull.Value;
4216 cmd.ExecuteNonQuery ();
4219 cmd = conn.CreateCommand ();
4220 cmd.CommandText = select_by_id;
4221 param = cmd.Parameters.Add ("id", OdbcType.Int);
4223 dr = cmd.ExecuteReader ();
4224 Assert.IsTrue (dr.Read (), "#D1");
4225 Assert.AreEqual (6000, dr.GetValue (0), "#D2");
4226 Assert.AreEqual (DBNull.Value, dr.GetValue (1), "#D3");
4227 Assert.IsFalse (dr.Read (), "#D4");
4238 DBHelper.ExecuteNonQuery (conn, delete_data);
4244 public void DBNullParameterTest()
4246 IDbConnection conn = ConnectionManager.Singleton.Connection;
4248 ConnectionManager.Singleton.OpenConnection ();
4249 OdbcDataAdapter Adaptador = new OdbcDataAdapter ();
4250 DataSet Lector = new DataSet ();
4252 Adaptador.SelectCommand = new OdbcCommand ("SELECT ?;", (OdbcConnection) conn);
4253 Adaptador.SelectCommand.Parameters.AddWithValue("@un", DBNull.Value);
4254 Adaptador.Fill (Lector);
4255 Assert.AreEqual (Lector.Tables[0].Rows[0][0], DBNull.Value, "#1 DBNull parameter not passed correctly");
4257 ConnectionManager.Singleton.CloseConnection ();
4262 public void ParameterName ()
4264 OdbcParameter p = new OdbcParameter ();
4265 p.ParameterName = "foo1";
4266 Assert.AreEqual ("foo1", p.ParameterName, "#1");
4267 p.ParameterName = null;
4268 Assert.AreEqual (string.Empty, p.ParameterName, "#2");
4269 p.ParameterName = "foo2";
4270 Assert.AreEqual ("foo2", p.ParameterName, "#3");
4271 p.ParameterName = string.Empty;
4272 Assert.AreEqual (string.Empty, p.ParameterName, "#4");
4276 public void SourceColumn ()
4278 OdbcParameter p = new OdbcParameter ();
4279 p.SourceColumn = "foo1";
4280 Assert.AreEqual ("foo1", p.SourceColumn, "#1");
4281 p.SourceColumn = null;
4282 Assert.AreEqual (string.Empty, p.SourceColumn, "#2");
4283 p.SourceColumn = "foo2";
4284 Assert.AreEqual ("foo2", p.SourceColumn, "#3");
4285 p.SourceColumn = string.Empty;
4286 Assert.AreEqual (string.Empty, p.SourceColumn, "#4");
4290 public void DefaultValuesTest ()
4294 p = new OdbcParameter();
4295 Assert.AreEqual (DbType.String, p.DbType, "#A:DbType");
4296 Assert.AreEqual (ParameterDirection.Input, p.Direction, "#A:Direction");
4297 Assert.IsFalse (p.IsNullable, "#A:IsNullable");
4298 Assert.AreEqual (OdbcType.NVarChar, p.OdbcType, "#A:OdbcType");
4299 Assert.AreEqual (String.Empty, p.ParameterName, "#A:ParameterName");
4300 Assert.AreEqual (0, p.Precision, "#A:Precision");
4301 Assert.AreEqual (0, p.Scale, "#A:Scale");
4302 Assert.AreEqual (0, p.Size, "#A:Size");
4303 Assert.AreEqual (String.Empty, p.SourceColumn, "#A:SourceColumn");
4304 Assert.IsFalse (p.SourceColumnNullMapping, "#A:SourceColumnNullMapping");
4305 Assert.AreEqual (DataRowVersion.Current, p.SourceVersion, "#A:SourceVersion");
4306 Assert.IsNull (p.Value, "#A:Value");
4308 p = new OdbcParameter(null, 2);
4309 Assert.AreEqual (DbType.String, p.DbType, "#B:DbType");
4310 Assert.AreEqual (ParameterDirection.Input, p.Direction, "#B:Direction");
4311 Assert.IsFalse (p.IsNullable, "#B:IsNullable");
4312 Assert.AreEqual (OdbcType.NVarChar, p.OdbcType, "#B:OdbcType");
4313 Assert.AreEqual (String.Empty, p.ParameterName, "#B:ParameterName");
4314 Assert.AreEqual (0, p.Precision, "#B:Precision");
4315 Assert.AreEqual (0, p.Scale, "#B:Scale");
4316 Assert.AreEqual (0, p.Size, "#B:Size");
4317 Assert.AreEqual (String.Empty, p.SourceColumn, "#B:SourceColumn");
4318 Assert.IsFalse (p.SourceColumnNullMapping, "#B:SourceColumnNullMapping");
4319 Assert.AreEqual (DataRowVersion.Current, p.SourceVersion, "#B:SourceVersion");
4320 Assert.AreEqual (2, p.Value, "#B:Value");
4322 p = new OdbcParameter("foo", 2);
4323 Assert.AreEqual (DbType.String, p.DbType, "#C:DbType");
4324 Assert.AreEqual (ParameterDirection.Input, p.Direction, "#C:Direction");
4325 Assert.IsFalse (p.IsNullable, "#C:IsNullable");
4326 Assert.AreEqual (OdbcType.NVarChar, p.OdbcType, "#C:OdbcType");
4327 Assert.AreEqual ("foo", p.ParameterName, "#C:ParameterName");
4328 Assert.AreEqual (0, p.Precision, "#C:Precision");
4329 Assert.AreEqual (0, p.Scale, "#C:Scale");
4330 Assert.AreEqual (0, p.Size, "#C:Size");
4331 Assert.AreEqual (String.Empty, p.SourceColumn, "#C:SourceColumn");
4332 Assert.IsFalse (p.SourceColumnNullMapping, "#C:SourceColumnNullMapping");
4333 Assert.AreEqual (DataRowVersion.Current, p.SourceVersion, "#C:SourceVersion");
4334 Assert.AreEqual (2, p.Value, "#C:Value");
4336 p = new OdbcParameter("foo1", OdbcType.Int);
4337 Assert.AreEqual (DbType.Int32, p.DbType, "#D:DbType");
4338 Assert.AreEqual (ParameterDirection.Input, p.Direction, "#D:Direction");
4339 Assert.IsFalse (p.IsNullable, "#D:IsNullable");
4340 Assert.AreEqual (OdbcType.Int, p.OdbcType, "#D:OdbcType");
4341 Assert.AreEqual ("foo1", p.ParameterName, "#D:ParameterName");
4342 Assert.AreEqual (0, p.Precision, "#D:Precision");
4343 Assert.AreEqual (0, p.Scale, "#D:Scale");
4344 Assert.AreEqual (0, p.Size, "#D:Size");
4345 Assert.AreEqual (String.Empty, p.SourceColumn, "#D:SourceColumn");
4346 Assert.IsFalse (p.SourceColumnNullMapping, "#D:SourceColumnNullMapping");
4347 Assert.AreEqual (DataRowVersion.Current, p.SourceVersion, "#D:SourceVersion");
4348 Assert.IsNull (p.Value, "#D:Value");