1 // OdbcCommandTest.cs - NUnit Test Cases for testing the
5 // Sureshkumar T (TSureshkumar@novell.com)
7 // Copyright (c) 2005 Novell Inc., and the individuals listed
8 // on the ChangeLog entries.
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 using System.Data.Common;
33 using System.Data.Odbc;
34 using System.Globalization;
38 using NUnit.Framework;
40 namespace MonoTests.System.Data
44 public class OdbcParameterTest
47 public void IntegerParamTest ()
49 string query = "select type_int from numeric_family where id = ?";
50 IDbConnection conn = ConnectionManager.Singleton.Connection;
52 ConnectionManager.Singleton.OpenConnection ();
53 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
54 cmd.CommandText = query;
56 OdbcParameter param = cmd.Parameters.Add ("id", OdbcType.Int);
58 OdbcDataReader reader = cmd.ExecuteReader ();
59 Assert.IsTrue (reader.Read (), "#1 no data to test");
60 Assert.AreEqual (-2147483648, (int) reader [0], "#2 value not matching");
62 ConnectionManager.Singleton.CloseConnection ();
67 public void BigIntParamTest ()
69 string query = "select id, type_bigint from numeric_family where type_bigint = ? and id = 1";
70 IDbConnection conn = ConnectionManager.Singleton.Connection;
72 ConnectionManager.Singleton.OpenConnection ();
73 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
74 cmd.CommandText = query;
76 OdbcParameter param = cmd.Parameters.Add ("type_bigint", OdbcType.BigInt);
77 param.Value = (long) (9223372036854775807);
78 OdbcDataReader reader = cmd.ExecuteReader ();
79 Assert.IsTrue (reader.Read (), "#1 no data to test");
80 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
82 ConnectionManager.Singleton.CloseConnection ();
87 public void SmallIntParamTest ()
89 string query = "select id, type_smallint from numeric_family where type_smallint = ? and id = 1";
90 IDbConnection conn = ConnectionManager.Singleton.Connection;
92 ConnectionManager.Singleton.OpenConnection ();
93 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
94 cmd.CommandText = query;
96 OdbcParameter param = cmd.Parameters.Add ("type_smallint", OdbcType.BigInt);
98 OdbcDataReader reader = cmd.ExecuteReader ();
99 Assert.IsTrue (reader.Read (), "#1 no data to test");
100 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
102 ConnectionManager.Singleton.CloseConnection ();
107 public void TinyIntParamTest ()
109 string query = "select id, type_tinyint from numeric_family where type_tinyint = ? and id = 1";
110 IDbConnection conn = ConnectionManager.Singleton.Connection;
112 ConnectionManager.Singleton.OpenConnection ();
113 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
114 cmd.CommandText = query;
116 OdbcParameter param = cmd.Parameters.Add ("type_tinyint", OdbcType.BigInt);
118 OdbcDataReader reader = cmd.ExecuteReader ();
119 Assert.IsTrue (reader.Read (), "#1 no data to test");
120 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
122 ConnectionManager.Singleton.CloseConnection ();
128 public void StringParamTest ()
130 string query = "select id, fname from employee where fname = ?";
131 IDbConnection conn = ConnectionManager.Singleton.Connection;
133 ConnectionManager.Singleton.OpenConnection ();
134 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
135 cmd.CommandText = query;
137 OdbcParameter param = cmd.Parameters.Add ("fname", OdbcType.VarChar);
138 param.Value = "suresh";
139 OdbcDataReader reader = cmd.ExecuteReader ();
140 Assert.IsTrue (reader.Read (), "#1 no data to test");
141 Assert.AreEqual (1, (int) reader [0], "#2 value not matching");
143 ConnectionManager.Singleton.CloseConnection ();
149 public void BitParameterTest ()
151 string query = "select id, type_bit from numeric_family where type_bit = ? and id = 1";
152 IDbConnection conn = ConnectionManager.Singleton.Connection;
154 ConnectionManager.Singleton.OpenConnection ();
155 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
156 cmd.CommandText = query;
158 OdbcParameter param = cmd.Parameters.Add ("type_bit", OdbcType.Bit);
160 OdbcDataReader reader = cmd.ExecuteReader ();
161 Assert.IsTrue (reader.Read (), "#1 no data to test");
162 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
164 ConnectionManager.Singleton.CloseConnection ();
169 public void CharParameterTest ()
171 string query = "select id, type_char from string_family where type_char = ? and id = 1";
172 IDbConnection conn = ConnectionManager.Singleton.Connection;
174 ConnectionManager.Singleton.OpenConnection ();
175 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
176 cmd.CommandText = query;
178 OdbcParameter param = cmd.Parameters.Add ("type_char", OdbcType.Char);
179 param.Value = "char";
180 OdbcDataReader reader = cmd.ExecuteReader ();
181 Assert.IsTrue (reader.Read (), "#1 no data to test");
182 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
184 ConnectionManager.Singleton.CloseConnection ();
189 public void DecimalParameterTest ()
191 string query = "select id, type_decimal from numeric_family where type_decimal = ? and id = 1";
192 IDbConnection conn = ConnectionManager.Singleton.Connection;
194 ConnectionManager.Singleton.OpenConnection ();
195 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
196 cmd.CommandText = query;
198 OdbcParameter param = cmd.Parameters.Add ("type_decimal", OdbcType.Decimal);
199 param.Value = 1000.00m;
200 OdbcDataReader reader = cmd.ExecuteReader ();
201 Assert.IsTrue (reader.Read (), "#1 no data to test");
202 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
204 ConnectionManager.Singleton.CloseConnection ();
209 public void DoubleParameterTest ()
211 string query = "select id, type_double from numeric_family where type_double = ? and id = 1";
212 IDbConnection conn = ConnectionManager.Singleton.Connection;
214 ConnectionManager.Singleton.OpenConnection ();
215 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
216 cmd.CommandText = query;
218 OdbcParameter param = cmd.Parameters.Add ("type_double", OdbcType.Double);
219 param.Value = 1.79E+308;
220 OdbcDataReader reader = cmd.ExecuteReader ();
221 Assert.IsTrue (reader.Read (), "#1 no data to test");
222 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
224 ConnectionManager.Singleton.CloseConnection ();
229 public void ImageParameterTest ()
231 string query = "insert into binary_family (id, type_blob) values (6000,?)";
232 IDbConnection conn = ConnectionManager.Singleton.Connection;
234 ConnectionManager.Singleton.OpenConnection ();
235 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
236 cmd.CommandText = query;
238 OdbcParameter param = cmd.Parameters.Add ("type_blob", OdbcType.Image);
239 param.Value = new byte [] { 6, 6, 6, 6, 6, 6, 6, 6 };
240 cmd.ExecuteNonQuery ();
241 cmd.CommandText = "select count (*) from binary_family where id = 6000";
242 int count = (int) cmd.ExecuteScalar ();
243 Assert.AreEqual (1, count, "#1 value not matching");
245 DBHelper.ExecuteNonQuery (conn, "delete from binary_family where id = 6000");
246 ConnectionManager.Singleton.CloseConnection ();
251 public void NCharParameterTest ()
253 string query = "select id, type_char from string_family where type_char = ? and id = 1";
254 IDbConnection conn = ConnectionManager.Singleton.Connection;
256 ConnectionManager.Singleton.OpenConnection ();
257 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
258 cmd.CommandText = query;
260 OdbcParameter param = cmd.Parameters.Add ("type_char", OdbcType.NChar);
261 param.Value = "char";
262 OdbcDataReader reader = cmd.ExecuteReader ();
263 Assert.IsTrue (reader.Read (), "#1 no data to test");
264 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
266 ConnectionManager.Singleton.CloseConnection ();
271 public void NTextParameterTest ()
273 string query = "insert into string_family (id, type_ntext) values (6000, ?)";
274 IDbConnection conn = ConnectionManager.Singleton.Connection;
276 ConnectionManager.Singleton.OpenConnection ();
277 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
278 cmd.CommandText = query;
280 OdbcParameter param = cmd.Parameters.Add ("type_ntext", OdbcType.NText);
281 param.Value = "ntext";
282 cmd.ExecuteNonQuery ();
283 cmd.CommandText = "select count (*) from string_family where id = 6000";
284 Assert.AreEqual (1,(int) cmd.ExecuteScalar (), "#1 value not matching");
286 DBHelper.ExecuteNonQuery (conn, "delete from string_family where id = 6000");
287 ConnectionManager.Singleton.CloseConnection ();
292 public void TextParameterTest ()
294 string query = "insert into string_family (id, type_text) values (6000, ?)";
295 IDbConnection conn = ConnectionManager.Singleton.Connection;
297 ConnectionManager.Singleton.OpenConnection ();
298 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
299 cmd.CommandText = query;
301 OdbcParameter param = cmd.Parameters.Add ("type_text", OdbcType.Text);
302 param.Value = "text";
303 cmd.ExecuteNonQuery ();
304 cmd.CommandText = "select count (*) from string_family where id = 6000";
305 Assert.AreEqual (1,(int) cmd.ExecuteScalar (), "#1 value not matching");
307 DBHelper.ExecuteNonQuery (conn, "delete from string_family where id = 6000");
308 ConnectionManager.Singleton.CloseConnection ();
313 public void NumericParameterTest ()
315 string query = "select id, type_numeric from numeric_family where type_numeric = ? and id = 1";
316 IDbConnection conn = ConnectionManager.Singleton.Connection;
318 ConnectionManager.Singleton.OpenConnection ();
319 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
320 cmd.CommandText = query;
322 OdbcParameter param = cmd.Parameters.Add ("type_numeric", OdbcType.Numeric);
325 param.Value = 1000.00m;
326 OdbcDataReader reader = cmd.ExecuteReader ();
327 Assert.IsTrue (reader.Read (), "#1 no data to test");
328 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
330 ConnectionManager.Singleton.CloseConnection ();
335 public void NVarCharParameterTest ()
337 string query = "select id, type_varchar from string_family where type_varchar = ? and id = 1";
338 IDbConnection conn = ConnectionManager.Singleton.Connection;
340 ConnectionManager.Singleton.OpenConnection ();
341 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
342 cmd.CommandText = query;
344 OdbcParameter param = cmd.Parameters.Add ("type_varchar", OdbcType.NVarChar);
345 param.Value = "varchar";
346 OdbcDataReader reader = cmd.ExecuteReader ();
347 Assert.IsTrue (reader.Read (), "#1 no data to test");
348 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
350 ConnectionManager.Singleton.CloseConnection ();
356 public void VarCharParameterTest ()
358 string query = "select id, type_varchar from string_family where type_varchar = ? and id = 1";
359 IDbConnection conn = ConnectionManager.Singleton.Connection;
361 ConnectionManager.Singleton.OpenConnection ();
362 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
363 cmd.CommandText = query;
365 OdbcParameter param = cmd.Parameters.Add ("type_varchar", OdbcType.VarChar);
366 param.Value = "varchar";
367 OdbcDataReader reader = cmd.ExecuteReader ();
368 Assert.IsTrue (reader.Read (), "#1 no data to test");
369 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
371 ConnectionManager.Singleton.CloseConnection ();
376 public void RealParameterTest ()
378 string query = "select id, type_float from numeric_family where type_float = ? and id = 1";
379 IDbConnection conn = ConnectionManager.Singleton.Connection;
381 ConnectionManager.Singleton.OpenConnection ();
382 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
383 cmd.CommandText = query;
385 OdbcParameter param = cmd.Parameters.Add ("type_float", OdbcType.Real);
386 param.Value = 3.40E+38;
387 OdbcDataReader reader = cmd.ExecuteReader ();
388 Assert.IsTrue (reader.Read (), "#1 no data to test");
389 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
391 ConnectionManager.Singleton.CloseConnection ();
396 public void SmallDateTimeParameterTest ()
398 string query = "select id, type_smalldatetime from datetime_family where type_smalldatetime = ? and id = 1";
399 IDbConnection conn = ConnectionManager.Singleton.Connection;
401 ConnectionManager.Singleton.OpenConnection ();
402 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
403 cmd.CommandText = query;
405 OdbcParameter param = cmd.Parameters.Add ("type_smalldatetime", OdbcType.SmallDateTime);
406 param.Value = DateTime.Parse ("2079-06-06 23:59:00");
407 OdbcDataReader reader = cmd.ExecuteReader ();
408 Assert.IsTrue (reader.Read (), "#1 no data to test");
409 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
411 ConnectionManager.Singleton.CloseConnection ();
416 public void DateTimeParameterTest ()
418 string query = "select id, type_datetime from datetime_family where type_datetime = ? and id = 1";
419 IDbConnection conn = ConnectionManager.Singleton.Connection;
421 ConnectionManager.Singleton.OpenConnection ();
422 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
423 cmd.CommandText = query;
425 OdbcParameter param = cmd.Parameters.Add ("type_datetime", OdbcType.DateTime);
426 param.Value = DateTime.ParseExact ("9999-12-31 23:59:59.997", "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture);
427 OdbcDataReader reader = cmd.ExecuteReader ();
428 Assert.IsTrue (reader.Read (), "#1 no data to test");
429 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
431 ConnectionManager.Singleton.CloseConnection ();
436 [Ignore ("Not running on ms.net")]
437 public void DateParameterTest ()
439 string query = "select id, type_datetime from datetime_family where type_datetime = ? and id = 1";
440 IDbConnection conn = ConnectionManager.Singleton.Connection;
442 ConnectionManager.Singleton.OpenConnection ();
443 OdbcCommand cmd = (OdbcCommand) conn.CreateCommand ();
444 cmd.CommandText = query;
446 OdbcParameter param = cmd.Parameters.Add ("type_datetime", OdbcType.Date);
447 param.Value = DateTime.ParseExact ("9999-12-31 23:59:59.997", "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture);
448 OdbcDataReader reader = cmd.ExecuteReader ();
449 Assert.IsTrue (reader.Read (), "#1 no data to test");
450 Assert.AreEqual (1, Convert.ToInt32 (reader [0]), "#2 value not matching");
452 ConnectionManager.Singleton.CloseConnection ();