1 // SqlCommandBuilderTest.cs - NUnit Test Cases for testing the
2 // SqlCommandBuilder class
5 // Sureshkumar T (tsureshkumar@novell.com)
6 // Veerapuram Varadhan (vvaradhan@novell.com)
8 // Copyright (c) 2004 Novell Inc., and the individuals listed on the
12 // Permission is hereby granted, free of charge, to any person
13 // obtaining a copy of this software and associated documentation
14 // files (the "Software"), to deal in the Software without
15 // restriction, including without limitation the rights to use, copy,
16 // modify, merge, publish, distribute, sublicense, and/or sell copies
17 // of the Software, and to permit persons to whom the Software is
18 // furnished to do so, subject to the following conditions:
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27 // BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29 // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
34 using System.Data.Common;
35 using System.Data.SqlClient;
36 using System.Data.SqlTypes;
39 using NUnit.Framework;
41 namespace MonoTests.System.Data
44 [Category ("sqlserver")]
45 public class SqlCommandBuilderTest
47 SqlConnection conn = null;
48 static EngineConfig engine;
53 conn = new SqlConnection (ConnectionManager.Singleton.ConnectionString);
54 engine = ConnectionManager.Singleton.Engine;
57 private static EngineConfig Engine {
69 public void TearDown ()
75 public void GetInsertCommand1 ()
77 SqlCommand cmd = null;
80 string selectQuery = "select id, fname, lname " +
81 "from employee where id = 1";
82 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
83 DataSet ds = new DataSet ();
84 da.Fill (ds, "IntTest");
85 Assert.AreEqual (1, ds.Tables.Count);
89 cb = new SqlCommandBuilder (da);
90 cmd = cb.GetInsertCommand ();
91 Assert.AreEqual ("INSERT INTO [employee] ([id], " +
92 "[fname], [lname]) VALUES (@p1, @p2, @p3)",
93 cmd.CommandText, "#A1");
94 Assert.AreSame (conn, cmd.Connection, "#A2");
95 AssertInsertParameters (cmd, false, "#A3:");
96 Assert.AreSame (cmd, cb.GetInsertCommand (), "#A4");
99 cb.QuotePrefix = "\"";
100 cmd = cb.GetInsertCommand ();
101 Assert.AreEqual ("INSERT INTO \"employee] (\"id], " +
102 "\"fname], \"lname]) VALUES (@p1, @p2, @p3)",
103 cmd.CommandText, "#B1");
104 Assert.AreSame (conn, cmd.Connection, "#B2");
105 AssertInsertParameters (cmd, false, "#B3:");
106 Assert.AreSame (cmd, cb.GetInsertCommand (), "#B4");
109 cb.QuoteSuffix = "\"";
110 cmd = cb.GetInsertCommand ();
111 Assert.AreEqual ("INSERT INTO \"employee\" (\"id\", "
112 + "\"fname\", \"lname\") VALUES (@p1, @p2, @p3)",
113 cmd.CommandText, "#C1");
114 Assert.AreSame (conn, cmd.Connection, "#C2");
115 AssertInsertParameters (cmd, false, "#C3");
116 Assert.AreSame (cmd, cb.GetInsertCommand (), "#C4");
124 public void GetInsertCommand1_Expression ()
126 SqlCommand cmd = null;
129 string selectQuery = "select id, fname, lname, " +
130 "id+1 as next_id from employee where " +
132 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
133 DataSet ds = new DataSet ();
134 da.Fill (ds, "IntTest");
135 Assert.AreEqual (1, ds.Tables.Count);
137 SqlCommandBuilder cb = new SqlCommandBuilder (da);
138 cmd = cb.GetInsertCommand ();
139 Assert.AreEqual ("INSERT INTO [employee] " +
140 "([id], [fname], [lname]) VALUES " +
141 "(@p1, @p2, @p3)", cmd.CommandText, "#1");
142 Assert.AreSame (conn, cmd.Connection, "#2");
143 AssertInsertParameters (cmd, false, "#3:");
150 [Test] // GetInsertCommand (Boolean)
151 public void GetInsertCommand2 ()
153 SqlCommand cmd = null;
156 string selectQuery = "select id, fname, lname " +
157 "from employee where id = 1";
158 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
159 DataSet ds = new DataSet ();
160 da.Fill (ds, "IntTest");
161 Assert.AreEqual (1, ds.Tables.Count);
163 SqlCommandBuilder cb;
165 cb = new SqlCommandBuilder (da);
166 cmd = cb.GetInsertCommand (true);
167 Assert.AreEqual ("INSERT INTO [employee] ([id], " +
168 "[fname], [lname]) VALUES (@id, @fname, " +
169 "@lname)", cmd.CommandText, "#A1");
170 Assert.AreSame (conn, cmd.Connection, "#A2");
171 AssertInsertParameters (cmd, true, "#A3:");
173 cmd = cb.GetInsertCommand (false);
174 Assert.AreEqual ("INSERT INTO [employee] ([id], " +
175 "[fname], [lname]) VALUES (@id, @fname, " +
176 "@lname)", cmd.CommandText, "#B1");
177 Assert.AreSame (conn, cmd.Connection, "#B2");
178 AssertInsertParameters (cmd, true, "#B3:");
180 cb = new SqlCommandBuilder (da);
181 cmd = cb.GetInsertCommand (false);
182 Assert.AreEqual ("INSERT INTO [employee] ([id], " +
183 "[fname], [lname]) VALUES (@p1, @p2, @p3)",
184 cmd.CommandText, "#C1");
185 Assert.AreSame (conn, cmd.Connection, "#C2");
186 AssertInsertParameters (cmd, false, "#C3:");
188 cmd = cb.GetInsertCommand (true);
189 Assert.AreEqual ("INSERT INTO [employee] ([id], " +
190 "[fname], [lname]) VALUES (@id, @fname, " +
191 "@lname)", cmd.CommandText, "#D1");
192 Assert.AreSame (conn, cmd.Connection, "#D2");
193 AssertInsertParameters (cmd, true, "#D3:");
200 [Test] // GetUpdateCommand ()
201 public void GetUpdateCommand1 ()
203 SqlCommand cmd = null;
206 string selectQuery = "select id, fname, lname, " +
207 "id+1 as next_id from employee where " +
208 "id = 3 and lname = 'A' and fname = 'B'";
209 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
210 DataSet ds = new DataSet ();
211 da.Fill (ds, "IntTest");
212 Assert.AreEqual (1, ds.Tables.Count);
214 SqlCommandBuilder cb = new SqlCommandBuilder (da);
215 cmd = cb.GetUpdateCommand ();
216 Assert.AreEqual ("UPDATE [employee] SET [id] = @p1, " +
217 "[fname] = @p2, [lname] = @p3 WHERE (([id] = @p4) " +
218 "AND ([fname] = @p5) AND ((@p6 = 1 " +
219 "AND [lname] IS NULL) OR ([lname] = @p7)))",
220 cmd.CommandText, "#A1");
221 Assert.AreSame (conn, cmd.Connection, "#A2");
222 AssertUpdateParameters (cmd, false, "#A3:");
223 Assert.AreSame (cmd, cb.GetUpdateCommand (), "#A4");
226 cb.QuotePrefix = "\"";
227 cmd = cb.GetUpdateCommand ();
228 Assert.AreEqual ("UPDATE \"employee] SET \"id] = @p1, " +
229 "\"fname] = @p2, \"lname] = @p3 WHERE ((\"id] = @p4) " +
230 "AND (\"fname] = @p5) AND ((@p6 = 1 " +
231 "AND \"lname] IS NULL) OR (\"lname] = @p7)))",
232 cmd.CommandText, "#B1");
233 Assert.AreSame (conn, cmd.Connection, "#B2");
234 AssertUpdateParameters (cmd, false, "#B3:");
235 Assert.AreSame (cmd, cb.GetUpdateCommand (), "#B4");
238 cb.QuoteSuffix = "\"";
239 cmd = cb.GetUpdateCommand ();
240 Assert.AreEqual ("UPDATE \"employee\" SET \"id\" = @p1, " +
241 "\"fname\" = @p2, \"lname\" = @p3 WHERE ((\"id\" = @p4) " +
242 "AND (\"fname\" = @p5) AND ((@p6 = 1 " +
243 "AND \"lname\" IS NULL) OR (\"lname\" = @p7)))",
244 cmd.CommandText, "#C1");
245 Assert.AreSame (conn, cmd.Connection, "#C2");
246 AssertUpdateParameters (cmd, false, "#C3:");
247 Assert.AreSame (cmd, cb.GetUpdateCommand (), "#C4");
254 [Test] // GetUpdateCommand ()
255 public void GetUpdateCommand1_AutoIncrement ()
257 if (ClientVersion == 7)
258 Assert.Ignore ("Key information is not available for temporary tables.");
260 SqlCommand cmd = null;
263 cmd = conn.CreateCommand ();
264 cmd.CommandText = "create table #tmp_table (id int primary key , counter int identity(1,1), value varchar(10))";
265 cmd.ExecuteNonQuery ();
267 string selectQuery = "select id, counter, value, id+1 as next_id from #tmp_table";
268 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
269 DataSet ds = new DataSet ();
271 Assert.AreEqual (1, ds.Tables.Count);
272 Assert.AreEqual (4, ds.Tables [0].Columns.Count);
274 SqlCommandBuilder cb = new SqlCommandBuilder (da);
275 cmd = cb.GetUpdateCommand ();
276 Assert.AreEqual ("UPDATE [#tmp_table] SET [id] = @p1, " +
277 "[value] = @p2 WHERE (([id] = @p3) AND (" +
278 "[counter] = @p4) AND ((@p5 = 1 AND [value] IS NULL) " +
279 "OR ([value] = @p6)))", cmd.CommandText, "#1");
280 Assert.AreEqual (6, cmd.Parameters.Count, "#2");
287 [Test] // GetUpdateCommand ()
288 public void GetUpdateCommand1_CheckParameters ()
290 SqlCommand cmd = null;
293 SqlDataAdapter adapter = new SqlDataAdapter (
294 "select id, type_varchar from string_family",
296 SqlCommandBuilder cb = new SqlCommandBuilder (adapter);
298 cmd = cb.GetUpdateCommand ();
299 Assert.AreEqual (5, cmd.Parameters.Count, "#1");
300 Assert.AreEqual (SqlDbType.Int, cmd.Parameters ["@p4"].SqlDbType, "#2");
301 Assert.AreEqual (1, cmd.Parameters ["@p4"].Value, "#3");
303 cmd = cb.GetDeleteCommand ();
304 Assert.AreEqual (3, cmd.Parameters.Count, "#4");
305 Assert.AreEqual (SqlDbType.Int, cmd.Parameters ["@p2"].SqlDbType, "#5");
306 Assert.AreEqual (1, cmd.Parameters ["@p2"].Value, "#6");
313 [Test] // GetUpdateCommand (Boolean)
314 public void GetUpdateCommand2 ()
316 SqlCommand cmd = null;
319 string selectQuery = "select id, fname, lname, id+1 as next_id from employee where id = 1";
320 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
321 DataSet ds = new DataSet ();
322 da.Fill (ds, "IntTest");
323 Assert.AreEqual (1, ds.Tables.Count);
325 SqlCommandBuilder cb;
327 cb = new SqlCommandBuilder (da);
328 cmd = cb.GetUpdateCommand (true);
329 Assert.AreEqual ("UPDATE [employee] SET [id] = @id, " +
330 "[fname] = @fname, [lname] = @lname WHERE " +
331 "(([id] = @Original_id) AND ([fname] = " +
332 "@Original_fname) AND ((@IsNull_lname = 1 " +
333 "AND [lname] IS NULL) OR ([lname] = " +
334 "@Original_lname)))", cmd.CommandText, "#A1");
335 Assert.AreSame (conn, cmd.Connection, "#A2");
336 AssertUpdateParameters (cmd, true, "#A3:");
338 cmd = cb.GetUpdateCommand (false);
339 Assert.AreEqual ("UPDATE [employee] SET [id] = @id, " +
340 "[fname] = @fname, [lname] = @lname WHERE " +
341 "(([id] = @Original_id) AND ([fname] = " +
342 "@Original_fname) AND ((@IsNull_lname = 1 " +
343 "AND [lname] IS NULL) OR ([lname] = " +
344 "@Original_lname)))", cmd.CommandText, "#B1");
345 Assert.AreSame (conn, cmd.Connection, "#B2");
346 AssertUpdateParameters (cmd, true, "#B3:");
348 cb = new SqlCommandBuilder (da);
349 cmd = cb.GetUpdateCommand (false);
350 Assert.AreEqual ("UPDATE [employee] SET [id] = @p1, " +
351 "[fname] = @p2, [lname] = @p3 WHERE " +
352 "(([id] = @p4) AND ([fname] = @p5) AND " +
353 "((@p6 = 1 AND [lname] IS NULL) OR " +
354 "([lname] = @p7)))", cmd.CommandText, "#C1");
355 Assert.AreSame (conn, cmd.Connection, "#C2");
356 AssertUpdateParameters (cmd, false, "#C3:");
358 cmd = cb.GetUpdateCommand (true);
359 Assert.AreEqual ("UPDATE [employee] SET [id] = @id, " +
360 "[fname] = @fname, [lname] = @lname WHERE " +
361 "(([id] = @Original_id) AND ([fname] = " +
362 "@Original_fname) AND ((@IsNull_lname = 1 " +
363 "AND [lname] IS NULL) OR ([lname] = " +
364 "@Original_lname)))", cmd.CommandText, "#D1");
365 Assert.AreSame (conn, cmd.Connection, "#D2");
366 AssertUpdateParameters (cmd, true, "#D3:");
373 [Test] // GetUpdateCommand (Boolean)
374 public void GetUpdateCommand2_AutoIncrement ()
376 SqlCommand cmd = null;
379 cmd = conn.CreateCommand ();
380 cmd.CommandText = "create table #tmp_table (id int primary key , counter int identity(1,1), value varchar(10))";
381 cmd.ExecuteNonQuery ();
383 string selectQuery = "select id, counter, value, id+1 as next_id from #tmp_table";
384 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
385 DataSet ds = new DataSet ();
387 Assert.AreEqual (1, ds.Tables.Count);
388 Assert.AreEqual (4, ds.Tables [0].Columns.Count);
390 SqlCommandBuilder cb;
392 cb = new SqlCommandBuilder (da);
393 cmd = cb.GetUpdateCommand (true);
394 Assert.AreEqual ("UPDATE [#tmp_table] SET [id] = @id, " +
395 "[value] = @value WHERE (([id] = @Original_id) " +
396 "AND ([counter] = @Original_counter) AND " +
397 "((@IsNull_value = 1 AND [value] IS NULL) " +
398 "OR ([value] = @Original_value)))",
399 cmd.CommandText, "#A1");
400 Assert.AreEqual (6, cmd.Parameters.Count, "#A2");
402 cmd = cb.GetUpdateCommand (false);
403 Assert.AreEqual ("UPDATE [#tmp_table] SET [id] = @id, " +
404 "[value] = @value WHERE (([id] = @Original_id) " +
405 "AND ([counter] = @Original_counter) AND " +
406 "((@IsNull_value = 1 AND [value] IS NULL) " +
407 "OR ([value] = @Original_value)))",
408 cmd.CommandText, "#B1");
409 Assert.AreEqual (6, cmd.Parameters.Count, "#B2");
411 cb = new SqlCommandBuilder (da);
412 cmd = cb.GetUpdateCommand (false);
413 Assert.AreEqual ("UPDATE [#tmp_table] SET [id] = @p1, " +
414 "[value] = @p2 WHERE (([id] = @p3) " +
415 "AND ([counter] = @p4) AND ((@p5 = 1 " +
416 "AND [value] IS NULL) OR ([value] = @p6)))",
417 cmd.CommandText, "#C1");
418 Assert.AreEqual (6, cmd.Parameters.Count, "#C2");
420 cmd = cb.GetUpdateCommand (true);
421 Assert.AreEqual ("UPDATE [#tmp_table] SET [id] = @id, " +
422 "[value] = @value WHERE (([id] = @Original_id) " +
423 "AND ([counter] = @Original_counter) AND " +
424 "((@IsNull_value = 1 AND [value] IS NULL) " +
425 "OR ([value] = @Original_value)))",
426 cmd.CommandText, "#D1");
427 Assert.AreEqual (6, cmd.Parameters.Count, "#D2");
434 [Test] // GetUpdateCommand (Boolean)
435 public void GetUpdateDeleteCommand2_CheckParameters ()
437 SqlCommand cmd = null;
440 SqlDataAdapter adapter = new SqlDataAdapter (
441 "select id, type_varchar from string_family",
443 SqlCommandBuilder cb = new SqlCommandBuilder (adapter);
445 SqlCommand updateCommand = cb.GetUpdateCommand (true);
446 Assert.AreEqual (5, updateCommand.Parameters.Count, "#A1");
447 Assert.AreEqual (SqlDbType.VarChar, updateCommand.Parameters ["@type_varchar"].SqlDbType, "#A2");
449 //Assert.AreEqual (1, updateCommand.Parameters ["@type_char"].Value, "#A3");
451 SqlCommand delCommand = cb.GetDeleteCommand (true);
452 Assert.AreEqual (3, delCommand.Parameters.Count, "#B");
453 Assert.AreEqual (DbType.Int32, delCommand.Parameters [0].DbType, "#B: DbType (0)");
454 Assert.AreEqual ("@Original_id", delCommand.Parameters [0].ParameterName, "#B: ParameterName (0)");
455 Assert.AreEqual ("id", delCommand.Parameters [0].SourceColumn, "#B: SourceColumn (0)");
456 Assert.AreEqual (SqlDbType.Int, delCommand.Parameters [0].SqlDbType, "#B: SqlDbType (0)");
457 Assert.IsNull (delCommand.Parameters [0].Value, "#B: Value (0)");
459 Assert.AreEqual (DbType.Int32, delCommand.Parameters [1].DbType, "#B: DbType (1)");
460 Assert.AreEqual ("@IsNull_type_varchar", delCommand.Parameters [1].ParameterName, "#B: ParameterName (1)");
461 Assert.AreEqual ("type_varchar", delCommand.Parameters [1].SourceColumn, "#B: SourceColumn (1)");
462 Assert.AreEqual (SqlDbType.Int, delCommand.Parameters [1].SqlDbType, "#B: SqlDbType (1)");
463 Assert.AreEqual (1, delCommand.Parameters [1].Value, "#B: Value (1)");
465 Assert.AreEqual (DbType.AnsiString, delCommand.Parameters [2].DbType, "#B: DbType (2)");
466 Assert.AreEqual ("@Original_type_varchar", delCommand.Parameters [2].ParameterName, "#B: ParameterName (2)");
467 Assert.AreEqual ("type_varchar", delCommand.Parameters [2].SourceColumn, "#B: SourceColumn (2)");
468 Assert.AreEqual (SqlDbType.VarChar, delCommand.Parameters [2].SqlDbType, "#B: SqlDbType (2)");
469 Assert.IsNull (delCommand.Parameters [2].Value, "#B: Value (2)");
477 public void GetUpdateCommandDBConcurrencyExceptionTest ()
479 string selectQuery = "select id, fname from employee where id = 1";
480 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
481 DataSet ds = new DataSet ();
482 da.Fill (ds, "IntTest");
483 Assert.AreEqual (1, ds.Tables.Count);
485 SqlCommandBuilder cb = new SqlCommandBuilder (da);
486 Assert.IsNotNull (cb);
488 DataRow [] rows = ds.Tables [0].Select ("id=1");
489 rows [0] [0] = 6660; // non existent
490 ds.Tables [0].AcceptChanges (); // moves 6660 to original value
491 rows [0] [0] = 1; // moves 6660 as search key into db table
495 } catch (DBConcurrencyException ex) {
496 // Concurrency violation: the UpdateCommand
497 // affected 0 of the expected 1 records
498 Assert.AreEqual (typeof (DBConcurrencyException), ex.GetType (), "#3");
499 Assert.IsNull (ex.InnerException, "#4");
500 Assert.IsNotNull (ex.Message, "#5");
501 Assert.AreSame (rows [0], ex.Row, "#6");
502 Assert.AreEqual (1, ex.RowCount, "#7");
507 public void GetDeleteCommandDBConcurrencyExceptionTest ()
509 string selectQuery = "select id, fname from employee where id = 1";
510 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
511 DataSet ds = new DataSet ();
512 da.Fill (ds, "IntTest");
513 Assert.AreEqual (1, ds.Tables.Count);
515 SqlCommandBuilder cb = new SqlCommandBuilder (da);
516 Assert.IsNotNull (cb);
518 DataRow [] rows = ds.Tables [0].Select ("id=1");
519 rows [0] [0] = 6660; // non existent
520 ds.Tables [0].AcceptChanges (); // moves 6660 to original value
521 rows [0].Delete (); // moves 6660 as search key into db table
525 } catch (DBConcurrencyException ex) {
526 // Concurrency violation: the DeleteCommand
527 // affected 0 of the expected 1 records
528 Assert.AreEqual (typeof (DBConcurrencyException), ex.GetType (), "#2");
529 Assert.IsNull (ex.InnerException, "#3");
530 Assert.IsNotNull (ex.Message, "#4");
531 Assert.AreSame (rows [0], ex.Row, "#5");
532 Assert.AreEqual (1, ex.RowCount, "#6");
536 [Test] // GetDeleteCommand ()
537 public void GetDeleteCommand1 ()
539 SqlCommand cmd = null;
542 string selectQuery = "select id, fname, lname, " +
543 "id+2 as next_id from employee where " +
544 "id = 3 and lname = 'A' and fname = 'B'";
545 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
546 DataSet ds = new DataSet ();
547 da.Fill (ds, "IntTest");
548 Assert.AreEqual (1, ds.Tables.Count);
550 SqlCommandBuilder cb = new SqlCommandBuilder (da);
551 cmd = cb.GetDeleteCommand ();
552 Assert.AreEqual ("DELETE FROM [employee] WHERE " +
553 "(([id] = @p1) AND ([fname] = @p2) AND " +
554 "((@p3 = 1 AND [lname] IS NULL) OR " +
555 "([lname] = @p4)))", cmd.CommandText, "#A1");
556 Assert.AreSame (conn, cmd.Connection, "#A2");
557 AssertDeleteParameters (cmd, false, "#A3:");
558 Assert.AreSame (cmd, cb.GetDeleteCommand (), "#A4");
561 cb.QuotePrefix = "\"";
562 cmd = cb.GetDeleteCommand ();
564 Assert.AreEqual ("DELETE FROM \"employee] WHERE " +
565 "((\"id] = @p1) AND (\"fname] = @p2) AND " +
566 "((@p3 = 1 AND \"lname] IS NULL) OR " +
567 "(\"lname] = @p4)))", cmd.CommandText, "#B1");
568 Assert.AreSame (conn, cmd.Connection, "#B2");
569 AssertDeleteParameters (cmd, false, "#B3:");
570 Assert.AreSame (cmd, cb.GetDeleteCommand (), "#B4");
573 cb.QuoteSuffix = "\"";
574 cmd = cb.GetDeleteCommand ();
576 Assert.AreEqual ("DELETE FROM \"employee\" WHERE " +
577 "((\"id\" = @p1) AND (\"fname\" = @p2) AND " +
578 "((@p3 = 1 AND \"lname\" IS NULL) OR " +
579 "(\"lname\" = @p4)))", cmd.CommandText, "#C1");
580 Assert.AreSame (conn, cmd.Connection, "#C2");
581 AssertDeleteParameters (cmd, false, "#C3:");
582 Assert.AreSame (cmd, cb.GetDeleteCommand (), "#C4");
589 [Test] // GetDeleteCommand ()
590 public void GetDeleteCommand1_AutoIncrement ()
592 if (ClientVersion == 7)
593 Assert.Ignore ("Key information is not available for temporary tables.");
595 SqlCommand cmd = null;
598 cmd = conn.CreateCommand ();
599 cmd.CommandText = "create table #tmp_table (id int primary key , counter int identity(1,1), value varchar(10))";
600 cmd.ExecuteNonQuery ();
602 string selectQuery = "select id, counter, value, id+1 as next_id from #tmp_table";
603 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
604 DataSet ds = new DataSet ();
606 Assert.AreEqual (1, ds.Tables.Count);
607 Assert.AreEqual (4, ds.Tables [0].Columns.Count);
609 SqlCommandBuilder cb = new SqlCommandBuilder (da);
610 cmd = cb.GetDeleteCommand ();
611 Assert.AreEqual ("DELETE FROM [#tmp_table] WHERE " +
612 "(([id] = @p1) AND ([counter] = @p2) AND " +
613 "((@p3 = 1 AND [value] IS NULL) OR ([value] = @p4)))",
614 cmd.CommandText, "#1");
615 Assert.AreEqual (4, cmd.Parameters.Count, "#2");
622 [Test] // GetDeleteCommand ()
623 public void GetDeleteCommand1_CheckParameters ()
625 SqlCommand cmd = null;
628 SqlDataAdapter adapter = new SqlDataAdapter (
629 "select id, type_varchar from string_family",
631 SqlCommandBuilder cb = new SqlCommandBuilder (adapter);
633 cmd = cb.GetDeleteCommand ();
634 Assert.AreEqual (3, cmd.Parameters.Count, "#1");
635 Assert.AreEqual (SqlDbType.Int, cmd.Parameters ["@p2"].SqlDbType, "#2");
636 Assert.AreEqual (1, cmd.Parameters ["@p2"].Value, "#3");
643 [Test] // GetDeleteCommand ()
644 public void GetDeleteCommand2 ()
646 SqlCommand cmd = null;
649 string selectQuery = "select id, fname, lname, id+2 as next_id from employee where id = 3";
650 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
651 DataSet ds = new DataSet ();
652 da.Fill (ds, "IntTest");
653 Assert.AreEqual (1, ds.Tables.Count);
655 SqlCommandBuilder cb;
657 cb = new SqlCommandBuilder (da);
658 cmd = cb.GetDeleteCommand (true);
659 Assert.AreEqual ("DELETE FROM [employee] WHERE " +
660 "(([id] = @Original_id) AND ([fname] = " +
661 "@Original_fname) AND ((@IsNull_lname = 1 " +
662 "AND [lname] IS NULL) OR ([lname] = " +
663 "@Original_lname)))", cmd.CommandText, "#A1");
664 Assert.AreSame (conn, cmd.Connection, "#A2");
665 AssertDeleteParameters (cmd, true, "#A3:");
666 Assert.AreSame (cmd, cb.GetDeleteCommand (true), "#A4");
668 cmd = cb.GetDeleteCommand (false);
669 Assert.AreEqual ("DELETE FROM [employee] WHERE " +
670 "(([id] = @Original_id) AND ([fname] = " +
671 "@Original_fname) AND ((@IsNull_lname = 1 " +
672 "AND [lname] IS NULL) OR ([lname] = " +
673 "@Original_lname)))", cmd.CommandText, "#B1");
674 Assert.AreSame (conn, cmd.Connection, "#B2");
675 AssertDeleteParameters (cmd, true, "#B3:");
676 Assert.AreSame (cmd, cb.GetDeleteCommand (false), "#B4");
678 cb = new SqlCommandBuilder (da);
679 cmd = cb.GetDeleteCommand (false);
680 Assert.AreEqual ("DELETE FROM [employee] WHERE " +
681 "(([id] = @p1) AND ([fname] = @p2) AND " +
682 "((@p3 = 1 AND [lname] IS NULL) OR " +
683 "([lname] = @p4)))", cmd.CommandText, "#C1");
684 Assert.AreSame (conn, cmd.Connection, "#C2");
685 AssertDeleteParameters (cmd, false, "#C3:");
686 Assert.AreSame (cmd, cb.GetDeleteCommand (false), "#C4");
688 cmd = cb.GetDeleteCommand (true);
689 Assert.AreEqual ("DELETE FROM [employee] WHERE " +
690 "(([id] = @Original_id) AND ([fname] = " +
691 "@Original_fname) AND ((@IsNull_lname = 1 " +
692 "AND [lname] IS NULL) OR ([lname] = " +
693 "@Original_lname)))", cmd.CommandText, "#D1");
694 Assert.AreSame (conn, cmd.Connection, "#D2");
695 AssertDeleteParameters (cmd, true, "#D3:");
696 Assert.AreSame (cmd, cb.GetDeleteCommand (false), "#D4");
703 [Test] // GetDeleteCommand (Boolean)
704 public void GetDeleteCommand2_AutoIncrement ()
706 SqlCommand cmd = null;
709 cmd = conn.CreateCommand ();
710 cmd.CommandText = "create table #tmp_table (id int primary key , counter int identity(1,1), value varchar(10))";
711 cmd.ExecuteNonQuery ();
713 string selectQuery = "select id, counter, value, id+1 as next_id from #tmp_table";
714 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
715 DataSet ds = new DataSet ();
717 Assert.AreEqual (1, ds.Tables.Count);
718 Assert.AreEqual (4, ds.Tables [0].Columns.Count);
720 SqlCommandBuilder cb;
722 cb = new SqlCommandBuilder (da);
723 cmd = cb.GetDeleteCommand (true);
724 Assert.AreEqual ("DELETE FROM [#tmp_table] WHERE " +
725 "(([id] = @Original_id) AND ([counter] = @Original_counter) " +
726 "AND ((@IsNull_value = 1 AND [value] IS NULL) " +
727 "OR ([value] = @Original_value)))",
728 cmd.CommandText, "#A1");
729 Assert.AreEqual (4, cmd.Parameters.Count, "#A2");
731 cmd = cb.GetDeleteCommand (false);
732 Assert.AreEqual ("DELETE FROM [#tmp_table] WHERE " +
733 "(([id] = @Original_id) AND ([counter] = @Original_counter) " +
734 "AND ((@IsNull_value = 1 AND [value] IS NULL) " +
735 "OR ([value] = @Original_value)))",
736 cmd.CommandText, "#B1");
737 Assert.AreEqual (4, cmd.Parameters.Count, "#B2");
739 cb = new SqlCommandBuilder (da);
740 cmd = cb.GetDeleteCommand (false);
741 Assert.AreEqual ("DELETE FROM [#tmp_table] WHERE " +
742 "(([id] = @p1) AND ([counter] = @p2) " +
743 "AND ((@p3 = 1 AND [value] IS NULL) " +
744 "OR ([value] = @p4)))",
745 cmd.CommandText, "#C1");
746 Assert.AreEqual (4, cmd.Parameters.Count, "#C2");
748 cmd = cb.GetDeleteCommand (true);
749 Assert.AreEqual ("DELETE FROM [#tmp_table] WHERE " +
750 "(([id] = @Original_id) AND ([counter] = @Original_counter) " +
751 "AND ((@IsNull_value = 1 AND [value] IS NULL) " +
752 "OR ([value] = @Original_value)))",
753 cmd.CommandText, "#D1");
754 Assert.AreEqual (4, cmd.Parameters.Count, "#D2");
762 public void DefaultProperties ()
764 SqlCommandBuilder cb = new SqlCommandBuilder ();
765 Assert.AreEqual ("[", cb.QuotePrefix, "#5");
766 Assert.AreEqual ("]", cb.QuoteSuffix, "#6");
767 Assert.AreEqual (".", cb.CatalogSeparator, "#2");
768 //Assert.AreEqual ("", cb.DecimalSeparator, "#3");
769 Assert.AreEqual (".", cb.SchemaSeparator, "#4");
770 Assert.AreEqual (CatalogLocation.Start, cb.CatalogLocation, "#1");
771 Assert.AreEqual ("[monotest]", cb.QuoteIdentifier ("monotest"), "#7");
772 Assert.AreEqual ("\"monotest\"", cb.UnquoteIdentifier ("\"monotest\""), "#8");
773 //Assert.AreEqual (cb.ConflictOption.CompareAllSearchableValues, cb.ConflictDetection);
774 // FIXME: test SetAllValues
777 // FIXME: Add tests for examining RowError
778 // FIXME: Add test for ContinueUpdateOnError property
781 public void CheckParameters_BuiltCommand ()
783 SqlDataAdapter adapter = new SqlDataAdapter ("select id,type_varchar from string_family", conn);
784 SqlCommandBuilder cb = new SqlCommandBuilder(adapter);
785 DataSet ds = new DataSet ();
788 Assert.AreEqual (2, cb.GetInsertCommand().Parameters.Count, "#1");
790 DataRow row_rsInput = ds.Tables[0].NewRow();
791 row_rsInput["id"] = 100;
792 row_rsInput["type_varchar"] = "ttt";
793 ds.Tables[0].Rows.Add(row_rsInput);
795 Assert.AreEqual (2, cb.GetInsertCommand().Parameters.Count, "#2");
797 row_rsInput = ds.Tables[0].NewRow();
798 row_rsInput["id"] = 101;
799 row_rsInput["type_varchar"] = "ttt";
800 ds.Tables[0].Rows.Add(row_rsInput);
802 Assert.AreEqual (2, cb.GetInsertCommand().Parameters.Count, "#3");
806 public void DeriveParameters ()
808 SqlCommand cmd = null;
812 cmd = conn.CreateCommand ();
813 cmd.CommandText = "sp_326182a";
814 cmd.CommandType = CommandType.StoredProcedure;
815 cmd.CommandTimeout = 90;
816 cmd.Parameters.Add ("dummy", SqlDbType.Image, 5);
818 SqlCommandBuilder.DeriveParameters (cmd);
819 Assert.AreEqual (5, cmd.Parameters.Count, "#A1");
821 cmd = conn.CreateCommand ();
822 cmd.CommandText = "sp_326182b";
823 cmd.CommandType = CommandType.StoredProcedure;
824 cmd.CommandTimeout = 90;
825 cmd.Parameters.Add ("dummy", SqlDbType.Image, 5);
827 SqlCommandBuilder.DeriveParameters (cmd);
828 Assert.AreEqual (4, cmd.Parameters.Count, "#A");
830 param = cmd.Parameters [0];
831 Assert.AreEqual (ParameterDirection.ReturnValue, param.Direction, "#B:Direction");
832 Assert.IsFalse (param.IsNullable, "#B:IsNullable");
833 if (ClientVersion == 7)
834 Assert.AreEqual ("RETURN_VALUE", param.ParameterName, "#B:ParameterName");
836 Assert.AreEqual ("@RETURN_VALUE", param.ParameterName, "#B:ParameterName");
837 Assert.AreEqual (0, param.Precision, "#B:Precision");
838 Assert.AreEqual (0, param.Scale, "#B:Scale");
839 //Assert.AreEqual (0, param.Size, "#B:Size");
840 Assert.AreEqual (SqlDbType.Int, param.SqlDbType, "#B:SqlDbType");
841 Assert.IsNull (param.Value, "#B:Value");
843 param = cmd.Parameters [1];
844 Assert.AreEqual (ParameterDirection.Input, param.Direction, "#C:Direction");
845 Assert.IsFalse (param.IsNullable, "#C:IsNullable");
846 Assert.AreEqual ("@param0", param.ParameterName, "#C:ParameterName");
847 Assert.AreEqual (0, param.Precision, "#C:Precision");
848 Assert.AreEqual (0, param.Scale, "#C:Scale");
849 //Assert.AreEqual (0, param.Size, "#C:Size");
850 Assert.AreEqual (SqlDbType.Int, param.SqlDbType, "#C:SqlDbType");
851 Assert.IsNull (param.Value, "#C:Value");
853 param = cmd.Parameters [2];
854 Assert.AreEqual (ParameterDirection.InputOutput, param.Direction, "#D:Direction");
855 Assert.IsFalse (param.IsNullable, "#D:IsNullable");
856 Assert.AreEqual ("@param1", param.ParameterName, "#D:ParameterName");
857 Assert.AreEqual (5, param.Precision, "#D:Precision");
858 if (ClientVersion == 7)
859 Assert.AreEqual (2, param.Scale, "#D:Scale");
861 Assert.AreEqual (3, param.Scale, "#D:Scale");
862 //Assert.AreEqual (0, param.Size, "#D:Size");
863 Assert.AreEqual (SqlDbType.Decimal, param.SqlDbType, "#D:SqlDbType");
864 Assert.IsNull (param.Value, "#D:Value");
866 param = cmd.Parameters [3];
867 Assert.AreEqual (ParameterDirection.Input, param.Direction, "#E:Direction");
868 Assert.IsFalse (param.IsNullable, "#E:IsNullable");
869 Assert.AreEqual ("@param2", param.ParameterName, "#E:ParameterName");
870 Assert.AreEqual (0, param.Precision, "#E:Precision");
871 Assert.AreEqual (0, param.Scale, "#E:Scale");
872 Assert.AreEqual (12, param.Size, "#E:Size");
873 Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, "#E:SqlDbType");
874 Assert.IsNull (param.Value, "#E:Value");
876 cmd.Parameters ["@param0"].Value = 5;
877 cmd.Parameters ["@param1"].Value = 4.000m;
878 cmd.Parameters ["@param2"].Value = DBNull.Value;
879 cmd.ExecuteNonQuery ();
880 if (ClientVersion == 7)
881 Assert.AreEqual (666, cmd.Parameters ["RETURN_VALUE"].Value, "#F1");
883 Assert.AreEqual (666, cmd.Parameters ["@RETURN_VALUE"].Value, "#F1");
884 Assert.AreEqual (5, cmd.Parameters ["@param0"].Value, "#F2");
885 Assert.AreEqual (11m, cmd.Parameters ["@param1"].Value, "#F3");
886 Assert.AreEqual (DBNull.Value, cmd.Parameters ["@param2"].Value, "#F4");
894 public void QuotePrefix_DeleteCommand_Generated ()
896 SqlCommand cmd = null;
899 string selectQuery = "select id, lname from employee where id = 3";
900 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
901 DataSet ds = new DataSet ();
902 da.Fill (ds, "IntTest");
904 SqlCommandBuilder cb = new SqlCommandBuilder (da);
905 cmd = cb.GetDeleteCommand ();
906 Assert.AreEqual ("[", cb.QuotePrefix, "#1");
908 cb.QuotePrefix = "\"";
910 } catch (InvalidOperationException ex) {
911 // The QuotePrefix and QuoteSuffix properties
912 // cannot be changed once an Insert, Update, or
913 // Delete command has been generated
914 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
915 Assert.IsNull (ex.InnerException, "#4");
916 Assert.IsNotNull (ex.Message, "#5");
918 Assert.AreEqual ("[", cb.QuotePrefix, "#6");
920 cb.QuotePrefix = "\"";
928 public void QuotePrefix_InsertCommand_Generated ()
930 SqlCommand cmd = null;
933 string selectQuery = "select id, lname from employee where id = 3";
934 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
935 DataSet ds = new DataSet ();
936 da.Fill (ds, "IntTest");
938 SqlCommandBuilder cb = new SqlCommandBuilder (da);
939 cmd = cb.GetInsertCommand ();
940 Assert.AreEqual ("[", cb.QuotePrefix, "#1");
942 cb.QuotePrefix = "\"";
944 } catch (InvalidOperationException ex) {
945 // The QuotePrefix and QuoteSuffix properties
946 // cannot be changed once an Insert, Update, or
947 // Delete command has been generated
948 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
949 Assert.IsNull (ex.InnerException, "#4");
950 Assert.IsNotNull (ex.Message, "#5");
952 Assert.AreEqual ("[", cb.QuotePrefix, "#6");
954 cb.QuotePrefix = "\"";
962 public void QuotePrefix_UpdateCommand_Generated ()
964 SqlCommand cmd = null;
967 string selectQuery = "select id, lname from employee where id = 3";
968 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
969 DataSet ds = new DataSet ();
970 da.Fill (ds, "IntTest");
972 SqlCommandBuilder cb = new SqlCommandBuilder (da);
973 cmd = cb.GetUpdateCommand ();
974 Assert.AreEqual ("[", cb.QuotePrefix, "#1");
976 cb.QuotePrefix = "\"";
978 } catch (InvalidOperationException ex) {
979 // The QuotePrefix and QuoteSuffix properties
980 // cannot be changed once an Insert, Update, or
981 // Delete command has been generated
982 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
983 Assert.IsNull (ex.InnerException, "#4");
984 Assert.IsNotNull (ex.Message, "#5");
986 Assert.AreEqual ("[", cb.QuotePrefix, "#6");
988 cb.QuotePrefix = "\"";
996 public void QuoteSuffix_DeleteCommand_Generated ()
998 SqlCommand cmd = null;
1001 string selectQuery = "select id, lname from employee where id = 3";
1002 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
1003 DataSet ds = new DataSet ();
1004 da.Fill (ds, "IntTest");
1006 SqlCommandBuilder cb = new SqlCommandBuilder (da);
1007 cmd = cb.GetDeleteCommand ();
1008 Assert.AreEqual ("]", cb.QuoteSuffix, "#1");
1010 cb.QuoteSuffix = "\"";
1012 } catch (InvalidOperationException ex) {
1013 // The QuotePrefix and QuoteSuffix properties
1014 // cannot be changed once an Insert, Update, or
1015 // Delete command has been generated
1016 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
1017 Assert.IsNull (ex.InnerException, "#4");
1018 Assert.IsNotNull (ex.Message, "#5");
1020 Assert.AreEqual ("]", cb.QuoteSuffix, "#6");
1021 cb.RefreshSchema ();
1022 cb.QuoteSuffix = "\"";
1030 public void QuoteSuffix_InsertCommand_Generated ()
1032 SqlCommand cmd = null;
1035 string selectQuery = "select id, lname from employee where id = 3";
1036 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
1037 DataSet ds = new DataSet ();
1038 da.Fill (ds, "IntTest");
1040 SqlCommandBuilder cb = new SqlCommandBuilder (da);
1041 cmd = cb.GetInsertCommand ();
1042 Assert.AreEqual ("]", cb.QuoteSuffix, "#1");
1044 cb.QuoteSuffix = "\"";
1046 } catch (InvalidOperationException ex) {
1047 // The QuotePrefix and QuoteSuffix properties
1048 // cannot be changed once an Insert, Update, or
1049 // Delete command has been generated
1050 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
1051 Assert.IsNull (ex.InnerException, "#4");
1052 Assert.IsNotNull (ex.Message, "#5");
1054 Assert.AreEqual ("]", cb.QuoteSuffix, "#6");
1055 cb.RefreshSchema ();
1056 cb.QuoteSuffix = "\"";
1064 public void QuoteSuffix_UpdateCommand_Generated ()
1066 SqlCommand cmd = null;
1069 string selectQuery = "select id, lname from employee where id = 3";
1070 SqlDataAdapter da = new SqlDataAdapter (selectQuery, conn);
1071 DataSet ds = new DataSet ();
1072 da.Fill (ds, "IntTest");
1074 SqlCommandBuilder cb = new SqlCommandBuilder (da);
1075 cmd = cb.GetUpdateCommand ();
1076 Assert.AreEqual ("]", cb.QuoteSuffix, "#1");
1078 cb.QuoteSuffix = "\"";
1080 } catch (InvalidOperationException ex) {
1081 // The QuotePrefix and QuoteSuffix properties
1082 // cannot be changed once an Insert, Update, or
1083 // Delete command has been generated
1084 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
1085 Assert.IsNull (ex.InnerException, "#4");
1086 Assert.IsNotNull (ex.Message, "#5");
1088 Assert.AreEqual ("]", cb.QuoteSuffix, "#6");
1089 cb.RefreshSchema ();
1090 cb.QuoteSuffix = "\"";
1097 static void AssertDeleteParameters (SqlCommand cmd, bool useColumnsForParameterNames, string prefix)
1101 Assert.AreEqual (4, cmd.Parameters.Count, prefix + "Count");
1103 param = cmd.Parameters [0];
1104 Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (0)");
1105 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (0)");
1106 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (0)");
1107 Assert.AreEqual (0, param.Offset, prefix + "Offset (0)");
1108 if (useColumnsForParameterNames)
1109 Assert.AreEqual ("@Original_id", param.ParameterName, prefix + "ParameterName (0)");
1111 Assert.AreEqual ("@p1", param.ParameterName, prefix + "ParameterName (0)");
1113 if (ClientVersion > 7)
1114 Assert.AreEqual (0, param.Precision, prefix + "Precision (0)");
1116 Assert.AreEqual (10, param.Precision, prefix + "Precision (0)");
1118 Assert.AreEqual (0, param.Scale, prefix + "Scale (0)");
1119 //Assert.AreEqual (0, param.Size, prefix + "Size (0)");
1120 Assert.AreEqual ("id", param.SourceColumn, prefix + "SourceColumn (0)");
1121 Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (0)");
1122 Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (0)");
1123 Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (0)");
1124 Assert.IsNull (param.SqlValue, prefix + "SqlValue (0)");
1125 //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (0)");
1126 Assert.IsNull (param.Value, prefix + "Value (0)");
1127 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (0)");
1128 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (0)");
1129 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (0)");
1132 param = cmd.Parameters [1];
1133 Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (1)");
1134 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (1)");
1135 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (1)");
1136 Assert.AreEqual (0, param.Offset, prefix + "Offset (1)");
1137 Assert.AreEqual ("@p2", param.ParameterName, prefix + "ParameterName (1)");
1138 Assert.AreEqual (0, param.Precision, prefix + "Precision (1)");
1139 Assert.AreEqual (0, param.Scale, prefix + "Scale (1)");
1140 //Assert.AreEqual (0, param.Size, prefix + "Size (1)");
1141 Assert.AreEqual (string.Empty, param.SourceColumn, prefix + "SourceColumn (1)");
1142 Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (1)");
1143 Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (1)");
1144 Assert.AreEqual (1, param.Value, prefix + "Value (1)");
1147 param = cmd.Parameters [1];
1148 Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (2)");
1149 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (2)");
1150 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (2)");
1151 Assert.AreEqual (0, param.Offset, prefix + "Offset (2)");
1152 if (useColumnsForParameterNames)
1153 Assert.AreEqual ("@Original_fname", param.ParameterName, prefix + "ParameterName (2)");
1155 Assert.AreEqual ("@p2", param.ParameterName, prefix + "ParameterName (2)");
1156 Assert.AreEqual (0, param.Precision, prefix + "Precision (2)");
1157 Assert.AreEqual (0, param.Scale, prefix + "Scale (2)");
1158 Assert.AreEqual (0, param.Size, prefix + "Size (2)");
1159 Assert.AreEqual ("fname", param.SourceColumn, prefix + "SourceColumn (2)");
1160 Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (2)");
1161 Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (2)");
1162 Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (2)");
1163 Assert.IsNull (param.SqlValue, prefix + "SqlValue (2)");
1164 //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (2)");
1165 Assert.IsNull (param.Value, prefix + "Value (2)");
1166 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (2)");
1167 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (2)");
1168 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (2)");
1170 param = cmd.Parameters [2];
1171 Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (3)");
1172 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (3)");
1173 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (3)");
1174 Assert.AreEqual (0, param.Offset, prefix + "Offset (3)");
1175 if (useColumnsForParameterNames)
1176 Assert.AreEqual ("@IsNull_lname", param.ParameterName, prefix + "ParameterName (3)");
1178 Assert.AreEqual ("@p3", param.ParameterName, prefix + "ParameterName (3)");
1179 Assert.AreEqual (0, param.Precision, prefix + "Precision (3)");
1180 Assert.AreEqual (0, param.Scale, prefix + "Scale (3)");
1181 //Assert.AreEqual (0, param.Size, prefix + "Size (3)");
1182 Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (3)");
1183 Assert.IsTrue (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (3)");
1184 Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (3)");
1185 Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (3)");
1186 Assert.AreEqual (new SqlInt32 (1), param.SqlValue, prefix + "SqlValue (3)");
1187 //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (3)");
1188 Assert.AreEqual (1, param.Value, prefix + "Value (3)");
1189 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (3)");
1190 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (3)");
1191 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (3)");
1193 param = cmd.Parameters [3];
1194 Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (4)");
1195 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (4)");
1196 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (4)");
1197 Assert.AreEqual (0, param.Offset, prefix + "Offset (4)");
1198 if (useColumnsForParameterNames)
1199 Assert.AreEqual ("@Original_lname", param.ParameterName, prefix + "ParameterName (4)");
1201 Assert.AreEqual ("@p4", param.ParameterName, prefix + "ParameterName (4)");
1202 Assert.AreEqual (0, param.Precision, prefix + "Precision (4)");
1203 Assert.AreEqual (0, param.Scale, prefix + "Scale (4)");
1204 Assert.AreEqual (0, param.Size, prefix + "Size (4)");
1205 Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (4)");
1206 Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (4)");
1207 Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (4)");
1208 Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (4)");
1209 Assert.IsNull (param.SqlValue, prefix + "SqlValue (4)");
1210 //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (4)");
1211 Assert.IsNull (param.Value, prefix + "Value (4)");
1212 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (4)");
1213 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (4)");
1214 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (4)");
1217 static void AssertInsertParameters (SqlCommand cmd, bool useColumnsForParameterNames, string prefix)
1221 Assert.AreEqual (3, cmd.Parameters.Count, prefix + "Count");
1223 param = cmd.Parameters [0];
1224 Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (0)");
1225 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (0)");
1226 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (0)");
1227 Assert.AreEqual (0, param.Offset, prefix + "Offset (0)");
1228 if (useColumnsForParameterNames)
1229 Assert.AreEqual ("@id", param.ParameterName, prefix + "ParameterName (0)");
1231 Assert.AreEqual ("@p1", param.ParameterName, prefix + "ParameterName (0)");
1233 if (ClientVersion > 7)
1234 Assert.AreEqual (0, param.Precision, prefix + "Precision (0)");
1236 Assert.AreEqual (10, param.Precision, prefix + "Precision (0)");
1238 Assert.AreEqual (0, param.Scale, prefix + "Scale (0)");
1239 //Assert.AreEqual (0, param.Size, prefix + "Size (0)");
1240 Assert.AreEqual ("id", param.SourceColumn, prefix + "SourceColumn (0)");
1241 Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (0)");
1242 Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (0)");
1243 Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (0)");
1244 Assert.IsNull (param.SqlValue, prefix + "SqlValue (0)");
1245 //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (0)");
1246 Assert.IsNull (param.Value, prefix + "Value (0)");
1247 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (0)");
1248 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (0)");
1249 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (0)");
1251 param = cmd.Parameters [1];
1252 Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (1)");
1253 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (1)");
1254 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (1)");
1255 Assert.AreEqual (0, param.Offset, prefix + "Offset (1)");
1256 if (useColumnsForParameterNames)
1257 Assert.AreEqual ("@fname", param.ParameterName, prefix + "ParameterName (1)");
1259 Assert.AreEqual ("@p2", param.ParameterName, prefix + "ParameterName (1)");
1260 Assert.AreEqual (0, param.Precision, prefix + "Precision (1)");
1261 Assert.AreEqual (0, param.Scale, prefix + "Scale (1)");
1262 Assert.AreEqual (0, param.Size, prefix + "Size (1)");
1263 Assert.AreEqual ("fname", param.SourceColumn, prefix + "SourceColumn (1)");
1264 Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (1)");
1265 Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (1)");
1266 Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (1)");
1267 Assert.IsNull (param.SqlValue, prefix + "SqlValue (1)");
1268 //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (1)");
1269 Assert.IsNull (param.Value, prefix + "Value (1)");
1270 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (1)");
1271 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (1)");
1272 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (1)");
1274 param = cmd.Parameters [2];
1275 Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (2)");
1276 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (2)");
1277 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (2)");
1278 Assert.AreEqual (0, param.Offset, prefix + "Offset (2)");
1279 if (useColumnsForParameterNames)
1280 Assert.AreEqual ("@lname", param.ParameterName, prefix + "ParameterName (2)");
1282 Assert.AreEqual ("@p3", param.ParameterName, prefix + "ParameterName (2)");
1283 Assert.AreEqual (0, param.Precision, prefix + "Precision (2)");
1284 Assert.AreEqual (0, param.Scale, prefix + "Scale (2)");
1285 Assert.AreEqual (0, param.Size, prefix + "Size (2)");
1286 Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (2)");
1287 Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (2)");
1288 Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (2)");
1289 Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (2)");
1290 Assert.IsNull (param.SqlValue, prefix + "SqlValue (2)");
1291 //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (2)");
1292 Assert.IsNull (param.Value, prefix + "Value (2)");
1293 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (2)");
1294 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (2)");
1295 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (2)");
1298 static void AssertUpdateParameters (SqlCommand cmd, bool useColumnsForParameterNames, string prefix)
1302 Assert.AreEqual (7, cmd.Parameters.Count, prefix + "Count");
1304 param = cmd.Parameters [0];
1305 Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (0)");
1306 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (0)");
1307 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (0)");
1308 Assert.AreEqual (0, param.Offset, prefix + "Offset (0)");
1309 if (useColumnsForParameterNames)
1310 Assert.AreEqual ("@id", param.ParameterName, prefix + "ParameterName (0)");
1312 Assert.AreEqual ("@p1", param.ParameterName, prefix + "ParameterName (0)");
1314 if (ClientVersion > 7)
1315 Assert.AreEqual (0, param.Precision, prefix + "Precision (0)");
1317 Assert.AreEqual (10, param.Precision, prefix + "Precision (0)");
1319 Assert.AreEqual (0, param.Scale, prefix + "Scale (0)");
1320 //Assert.AreEqual (0, param.Size, prefix + "Size (0)");
1321 Assert.AreEqual ("id", param.SourceColumn, prefix + "SourceColumn (0)");
1322 Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (0)");
1323 Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (0)");
1324 Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (0)");
1325 Assert.IsNull (param.SqlValue, prefix + "SqlValue (0)");
1326 //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (0)");
1327 Assert.IsNull (param.Value, prefix + "Value (0)");
1328 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (0)");
1329 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (0)");
1330 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (0)");
1332 param = cmd.Parameters [1];
1333 Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (1)");
1334 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (1)");
1335 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (1)");
1336 Assert.AreEqual (0, param.Offset, prefix + "Offset (1)");
1337 if (useColumnsForParameterNames)
1338 Assert.AreEqual ("@fname", param.ParameterName, prefix + "ParameterName (1)");
1340 Assert.AreEqual ("@p2", param.ParameterName, prefix + "ParameterName (1)");
1341 Assert.AreEqual (0, param.Precision, prefix + "Precision (1)");
1342 Assert.AreEqual (0, param.Scale, prefix + "Scale (1)");
1343 //Assert.AreEqual (0, param.Size, prefix + "Size (1)");
1344 Assert.AreEqual ("fname", param.SourceColumn, prefix + "SourceColumn (1)");
1345 Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (1)");
1346 Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (1)");
1347 Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (1)");
1348 Assert.IsNull (param.SqlValue, prefix + "SqlValue (1)");
1349 //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (1)");
1350 Assert.IsNull (param.Value, prefix + "Value (1)");
1351 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (1)");
1352 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (1)");
1353 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (1)");
1355 param = cmd.Parameters [2];
1356 Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (2)");
1357 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (2)");
1358 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (2)");
1359 Assert.AreEqual (0, param.Offset, prefix + "Offset (2)");
1360 if (useColumnsForParameterNames)
1361 Assert.AreEqual ("@lname", param.ParameterName, prefix + "ParameterName (2)");
1363 Assert.AreEqual ("@p3", param.ParameterName, prefix + "ParameterName (2)");
1364 Assert.AreEqual (0, param.Precision, prefix + "Precision (2)");
1365 Assert.AreEqual (0, param.Scale, prefix + "Scale (2)");
1366 Assert.AreEqual (0, param.Size, prefix + "Size (2)");
1367 Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (2)");
1368 Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (2)");
1369 Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (2)");
1370 Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (2)");
1371 Assert.IsNull (param.SqlValue, prefix + "SqlValue (2)");
1372 //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (2)");
1373 Assert.IsNull (param.Value, prefix + "Value (2)");
1374 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (2)");
1375 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (2)");
1376 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (2)");
1378 param = cmd.Parameters [3];
1379 Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (3)");
1380 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (3)");
1381 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (3)");
1382 Assert.AreEqual (0, param.Offset, prefix + "Offset (3)");
1383 if (useColumnsForParameterNames)
1384 Assert.AreEqual ("@Original_id", param.ParameterName, prefix + "ParameterName (3)");
1386 Assert.AreEqual ("@p4", param.ParameterName, prefix + "ParameterName (3)");
1388 if (ClientVersion > 7)
1389 Assert.AreEqual (0, param.Precision, prefix + "Precision (0)");
1391 Assert.AreEqual (10, param.Precision, prefix + "Precision (0)");
1393 Assert.AreEqual (0, param.Scale, prefix + "Scale (3)");
1394 //Assert.AreEqual (0, param.Size, prefix + "Size (3)");
1395 Assert.AreEqual ("id", param.SourceColumn, prefix + "SourceColumn (3)");
1396 Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (3)");
1397 Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (3)");
1398 Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (3)");
1399 Assert.IsNull (param.SqlValue, prefix + "SqlValue (3)");
1400 //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (3)");
1401 Assert.IsNull (param.Value, prefix + "Value (3)");
1402 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (3)");
1403 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (3)");
1404 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (3)");
1407 param = cmd.Parameters [4];
1408 Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (4)");
1409 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (4)");
1410 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (4)");
1411 Assert.AreEqual (0, param.Offset, prefix + "Offset (4)");
1412 Assert.AreEqual ("@p5", param.ParameterName, prefix + "ParameterName (4)");
1413 Assert.AreEqual (0, param.Precision, prefix + "Precision (4)");
1414 Assert.AreEqual (0, param.Scale, prefix + "Scale (4)");
1415 //Assert.AreEqual (0, param.Size, prefix + "Size (4)");
1416 Assert.AreEqual (string.Empty, param.SourceColumn, prefix + "SourceColumn (4)");
1417 Assert.AreEqual (DataRowVersion.Current, param.SourceVersion, prefix + "SourceVersion (4)");
1418 Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (4)");
1419 Assert.AreEqual (1, param.Value, prefix + "Value (4)");
1422 param = cmd.Parameters [4];
1423 Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (5)");
1424 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (5)");
1425 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (5)");
1426 Assert.AreEqual (0, param.Offset, prefix + "Offset (5)");
1427 if (useColumnsForParameterNames)
1428 Assert.AreEqual ("@Original_fname", param.ParameterName, prefix + "ParameterName (5)");
1430 Assert.AreEqual ("@p5", param.ParameterName, prefix + "ParameterName (5)");
1431 Assert.AreEqual (0, param.Precision, prefix + "Precision (5)");
1432 Assert.AreEqual (0, param.Scale, prefix + "Scale (5)");
1433 Assert.AreEqual (0, param.Size, prefix + "Size (5)");
1434 Assert.AreEqual ("fname", param.SourceColumn, prefix + "SourceColumn (5)");
1435 Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (5)");
1436 Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (5)");
1437 Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (5)");
1438 Assert.IsNull (param.SqlValue, prefix + "SqlValue (5)");
1439 //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (5)");
1440 Assert.IsNull (param.Value, prefix + "Value (5)");
1441 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (5)");
1442 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (5)");
1443 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (5)");
1445 param = cmd.Parameters [5];
1446 Assert.AreEqual (DbType.Int32, param.DbType, prefix + "DbType (6)");
1447 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (6)");
1448 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (6)");
1449 Assert.AreEqual (0, param.Offset, prefix + "Offset (6)");
1450 if (useColumnsForParameterNames)
1451 Assert.AreEqual ("@IsNull_lname", param.ParameterName, prefix + "ParameterName (6)");
1453 Assert.AreEqual ("@p6", param.ParameterName, prefix + "ParameterName (6)");
1454 Assert.AreEqual (0, param.Precision, prefix + "Precision (6)");
1455 Assert.AreEqual (0, param.Scale, prefix + "Scale (6)");
1456 //Assert.AreEqual (0, param.Size, prefix + "Size (6)");
1457 Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (6)");
1458 Assert.IsTrue (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (6)");
1459 Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (6)");
1460 Assert.AreEqual (SqlDbType.Int, param.SqlDbType, prefix + "SqlDbType (6)");
1461 Assert.AreEqual (new SqlInt32 (1), param.SqlValue, prefix + "SqlValue (6)");
1462 //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (6)");
1463 Assert.AreEqual (1, param.Value, prefix + "Value (6)");
1464 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (6)");
1465 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (6)");
1466 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (6)");
1468 param = cmd.Parameters [6];
1469 Assert.AreEqual (DbType.AnsiString, param.DbType, prefix + "DbType (7)");
1470 Assert.AreEqual (ParameterDirection.Input, param.Direction, prefix + "Direction (7)");
1471 Assert.IsFalse (param.IsNullable, prefix + "IsNullable (7)");
1472 Assert.AreEqual (0, param.Offset, prefix + "Offset (7)");
1473 if (useColumnsForParameterNames)
1474 Assert.AreEqual ("@Original_lname", param.ParameterName, prefix + "ParameterName (7)");
1476 Assert.AreEqual ("@p7", param.ParameterName, prefix + "ParameterName (7)");
1477 Assert.AreEqual (0, param.Precision, prefix + "Precision (7)");
1478 Assert.AreEqual (0, param.Scale, prefix + "Scale (7)");
1479 Assert.AreEqual (0, param.Size, prefix + "Size (7)");
1480 Assert.AreEqual ("lname", param.SourceColumn, prefix + "SourceColumn (7)");
1481 Assert.IsFalse (param.SourceColumnNullMapping, prefix + "SourceColumnNullMapping (7)");
1482 Assert.AreEqual (DataRowVersion.Original, param.SourceVersion, prefix + "SourceVersion (7)");
1483 Assert.AreEqual (SqlDbType.VarChar, param.SqlDbType, prefix + "SqlDbType (7)");
1484 Assert.IsNull (param.SqlValue, prefix + "SqlValue (7)");
1485 //Assert.AreEqual (string.Empty, param.UdtTypeName, prefix + "UdtTypeName (7)");
1486 Assert.IsNull (param.Value, prefix + "Value (7)");
1487 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionDatabase, prefix + "XmlSchemaCollectionDatabase (7)");
1488 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionName, prefix + "XmlSchemaCollectionName (7)");
1489 Assert.AreEqual (string.Empty, param.XmlSchemaCollectionOwningSchema, prefix + "XmlSchemaCollectionOwningSchema (7)");
1492 static int ClientVersion {
1494 return (SqlCommandBuilderTest.Engine.ClientVersion);