[Test] public void BeginInitTest () { DataSet ds = new DataSet (); DataTable table1 = new DataTable ("table1"); DataTable table2 = new DataTable ("table2"); DataColumn col1 = new DataColumn ("col1", typeof (int)); DataColumn col2 = new DataColumn ("col2", typeof (int)); table1.Columns.Add (col1); table2.Columns.Add (col2); UniqueConstraint pkey = new UniqueConstraint ("pk", new string[] {"col1"}, true); ForeignKeyConstraint fkey = new ForeignKeyConstraint ("fk", "table1", new String[] {"col1"}, new String[] {"col2"}, AcceptRejectRule.Cascade, Rule.Cascade, Rule.Cascade); DataRelation relation = new DataRelation ("rel", "table1", "table2", new String[] {"col1"}, new String[] {"col2"}, false); ds.BeginInit (); table1.BeginInit (); table2.BeginInit (); ds.Tables.AddRange (new DataTable[] {table1, table2}); ds.Relations.AddRange (new DataRelation[] {relation}); table1.Constraints.AddRange (new Constraint[] {pkey}); table2.Constraints.AddRange (new Constraint[] {fkey}); // The tables/relations shud not get added to the DataSet yet Assert.AreEqual (0, ds.Tables.Count, "#1"); Assert.AreEqual (0, ds.Relations.Count, "#2"); Assert.AreEqual (0, table1.Constraints.Count, "#3"); Assert.AreEqual (0, table2.Constraints.Count, "#4"); ds.EndInit (); Assert.AreEqual (2, ds.Tables.Count, "#5"); Assert.AreEqual (1, ds.Relations.Count, "#6"); Assert.AreEqual (1, ds.Tables [0].Constraints.Count, "#7"); Assert.AreEqual (1, ds.Tables [1].Constraints.Count, "#8"); // Table shud still be in BeginInit .. DataColumn col3 = new DataColumn ("col2"); UniqueConstraint uc = new UniqueConstraint ("uc", new string[] {"col2"}, false); table1.Columns.AddRange (new DataColumn[] {col3}); table1.Constraints.AddRange (new Constraint[] {uc}); Assert.AreEqual (1, table1.Columns.Count, "#9"); Assert.AreEqual (1, table1.Constraints.Count, "#10"); table1.EndInit (); Assert.AreEqual (2, table1.Columns.Count, "#11"); Assert.AreEqual (2, table1.Columns.Count, "#12"); }
internal static DataSet ExecuteSelect(EDtxReaderType connType, int timeout, IDbConnection conn, string cmdText, ParamHelper[] paramList, ref TimeSpan executionTime) { DateTime started = DateTime.Now; IDataReader reader = null; IDbCommand cmd = null; bool bConnOpenedHere = EnsureConnectionOpen(conn); IDbTransaction transaction = conn.BeginTransaction(); DataSet retv = new DataSet(); try { cmd = conn.CreateCommand(); cmd.CommandTimeout = timeout; cmd.Transaction = transaction; cmd.CommandText = cmdText; DbType[] reqLenTypes = new DbType[] { DbType.AnsiString, DbType.AnsiStringFixedLength, DbType.String, DbType.StringFixedLength, DbType.Binary, DbType.Object, DbType.Xml }; for (int i = 0; i < paramList.Length; i++) { IDbDataParameter idb = cmd.CreateParameter(); cmd.Parameters.Add(HelperFunctions.BuildParameter(idb, paramList[i])); if(reqLenTypes.Contains(idb.DbType)) { if (idb is OdbcParameter) { (idb as OdbcParameter).Size = paramList[i].Size; } else if (idb is CtreeSqlParameter) { (idb as CtreeSqlParameter).Size = paramList[i].Size; } } } switch(connType) { case EDtxReaderType.Adapter: case EDtxReaderType.FaircomAdapter: { IDbDataAdapter adap = GetAdapter(connType, cmd); retv.BeginInit(); //Since the FillSchema and Fill functions return the same instance of 'DataTable' //There is probably a better way of doing this, but for sake of explination //Read the db schema bool bSchemaFound = false; DataTable[] dta = adap.FillSchema(retv, SchemaType.Source); DataTable clone = null; if(dta.Length > 0) { bSchemaFound = true; dta[0].TableName = "SchemaTable"; //Ensure the table is named 'SchemaTable' retv.Tables.Remove(dta[0]); //Drop the table from the dataset clone = dta[0].Clone(); //Clone the results dta[0].TableName = "Table"; //Rename the datatable instance back to table } adap.Fill(retv); //Fill 'Table' with the actual results if(bSchemaFound && clone != null) retv.Tables.Add(clone); //Now add the 'schematable' back to the results retv.EndInit(); break; } default: { DataTable dt; reader = cmd.ExecuteReader(); if (reader.FieldCount > 0) { retv.Tables.Add(dt = new DataTable("Table")); retv.Tables.Add(reader.GetSchemaTable()); switch (connType) { case EDtxReaderType.FaircomReader: case EDtxReaderType.Reader: { dt.Load(reader, LoadOption.OverwriteChanges); } break; case EDtxReaderType.FaircomReaderSafe: case EDtxReaderType.ReaderSafe: default: { bool columnsBuilt = false; while (reader.Read()) { if (columnsBuilt == false) { BuildColumnData(dt, reader); columnsBuilt = true; } AddDataRow(dt, reader); } } break; } } break; } } transaction.Commit(); executionTime = DateTime.Now - started; //Now update parameter inputs with their respective values for (int i = 0; i < paramList.Length; i++) { IDbDataParameter p = (IDbDataParameter)cmd.Parameters[i]; if(p.Direction != ParameterDirection.Input) { paramList[i].OutValue = p.Value; } } } catch(Exception e) { transaction.Rollback(); executionTime = DateTime.Now - started; HelperFunctions.LogException(e, false); throw e; } finally { if(reader != null) { if(!reader.IsClosed) reader.Close(); reader.Dispose(); } if(cmd != null) { cmd.Dispose(); } if(bConnOpenedHere) { conn.Close(); } } return retv; }
private void mainForm_Load(object sender, EventArgs e) { try { evaDataSet.BeginInit(); evaDataSet.EnforceConstraints = true; evaDataSet.ReadXml("EventAction.xml", XmlReadMode.IgnoreSchema); evaDataSet.EndInit(); } catch { updateApplicationStatus(ApplicationState.Alert, @"Unable to read EventAction XML database."); } try { configDataSet = new DataSet(); configDataSet.BeginInit(); configDataSet.ReadXml("Configuration.xml"); configDataSet.EndInit(); } catch { updateApplicationStatus(ApplicationState.Alert, @"Unable to read Configuration XML database."); } try { DataTable dataTable = configDataSet.Tables["GamepadController"]; DataRow dataRow = dataTable.Rows[0]; int playerIndex = Convert.ToInt32(dataRow["player"]); gamepadController = new PG3B.Interface.GamepadController(playerIndex); } catch { updateApplicationStatus(ApplicationState.Warning, @"Unable to initialize GamePad."); } try { DataTable dataTable = configDataSet.Tables["XBoxController"]; DataRow dataRow = dataTable.Rows[0]; string portName = Convert.ToString(dataRow["port"]); xboxController = new PG3B.Interface.XBoxController(portName); switch (Convert.ToString(dataRow["model"])) { case "WiredCommonLine": xboxController.IsWireless = false; break; case "WirelessCommonGround": xboxController.IsWireless = true; break; } } catch { updateApplicationStatus(ApplicationState.Alert, @"Unable to initialize PG3B using Config.xml file."); } UpdateControllerStatus(); InitializeSubForms(); }