3 using System.Data.Common;
\r
4 using System.Data.SqlClient;
\r
6 using MonoTests.System.Data.Utils;
\r
8 using NUnit.Framework;
\r
10 namespace MonoTests.System.Data.SqlClient
\r
13 public class SqlDataAdapter_RowUpdating : ADONetTesterClass
\r
15 public static void Main()
\r
17 SqlDataAdapter_RowUpdating tc = new SqlDataAdapter_RowUpdating();
\r
18 Exception exp = null;
\r
21 tc.BeginTest("SqlDataAdapter_RowUpdating");
\r
35 //public TestClass():base(true){}
\r
37 //Activate this constructor to log Failures to a log file
\r
38 //public TestClass(System.IO.TextWriter tw):base(tw, false){}
\r
41 //Activate this constructor to log All to a log file
\r
42 //public TestClass(System.IO.TextWriter tw):base(tw, true){}
\r
44 //BY DEFAULT LOGGING IS DONE TO THE STANDARD OUTPUT ONLY FOR FAILURES
\r
46 int EventCounter = 0;
\r
47 DataRow drInsert,drDelete,drUpdate;
\r
51 if (ConnectedDataProvider.GetDbType() != DataBaseServer.SQLServer)
\r
53 Log("Test \"SqlDataAdapter_RowUpdated\" skipped: [Test applies only to sql server]");
\r
57 Exception exp = null;
\r
59 SqlDataAdapter sqlDa = new SqlDataAdapter();
\r
60 SqlConnection con = new SqlConnection(ConnectedDataProvider.ConnectionStringSQLClient);
\r
62 sqlDa.SelectCommand = new SqlCommand("",con);
\r
64 base.SqlDataAdapter_BuildUpdateCommands(ref sqlDa);
\r
65 // --------- get data from DB -----------------
\r
67 DataSet ds = base.PrepareDBData_Update((DbDataAdapter)sqlDa,true);
\r
70 // add event handler
\r
71 sqlDa.RowUpdating+=new SqlRowUpdatingEventHandler(sqlDa_RowUpdating);
\r
77 //insert ,delete, update
\r
78 drInsert = ds.Tables[0].NewRow();
\r
79 drInsert.ItemArray = new object[] {9991,"Ofer","Borshtein","Insert"};
\r
80 drDelete = ds.Tables[0].Rows.Find(9992);
\r
81 drUpdate = ds.Tables[0].Rows.Find(9993);
\r
83 ds.Tables[0].Rows.Add(drInsert);
\r
85 drUpdate["Title"] = "Jack the ripper";
\r
87 //execute update to db, will raise events
\r
92 BeginCase("EventCounter ");
\r
93 Compare(EventCounter ,3);
\r
95 catch(Exception ex) {exp = ex;}
\r
96 finally {EndCase(exp); exp = null;}
\r
98 sqlDa.RowUpdating-= new SqlRowUpdatingEventHandler(sqlDa_RowUpdating);
\r
101 if ( ((IDbDataAdapter)sqlDa).SelectCommand.Connection.State != ConnectionState.Closed )
\r
102 ((IDbDataAdapter)sqlDa).SelectCommand.Connection.Close();
\r
106 private void sqlDa_RowUpdating(object sender, SqlRowUpdatingEventArgs e)
\r
108 Exception exp = null;
\r
109 switch (e.StatementType)
\r
111 case StatementType.Insert:
\r
114 BeginCase("RowInsert");
\r
115 Compare(drInsert ,e.Row );
\r
117 catch(Exception ex) {exp = ex;}
\r
118 finally {EndCase(exp); exp = null;}
\r
121 case StatementType.Delete:
\r
124 BeginCase("RowDelete");
\r
125 Compare(drDelete ,e.Row );
\r
127 catch(Exception ex) {exp = ex;}
\r
128 finally {EndCase(exp); exp = null;}
\r
131 case StatementType.Update:
\r
134 BeginCase("RowUpdate");
\r
135 Compare(drUpdate ,e.Row );
\r
137 catch(Exception ex) {exp = ex;}
\r
138 finally {EndCase(exp); exp = null;}
\r