public void Fill(DsnConnection dsn) { DsnSQLUtil.FillDataTable(dsn, name); //DsnSQLUtil.FillDataTable( dsn, map, map.option_idColumn.ColumnName + "=" + MySQLDataTable.GetSQLValue( dsn, map.option_idColumn, Guid.Empty ) ); //OptionMapDatasetTableAdapters.option2_nameTableAdapter da = new OptionMapDatasetTableAdapters.option2_nameTableAdapter(); //da.Fill( this.option2_name ); //this.option2_valuesTableAdapter.Fill( this.option2_map ); //OptionMapDatasetTableAdapters.option2_valuesTableAdapter da3 = new OptionMapDatasetTableAdapters.option2_valuesTableAdapter(); //da3.Fill( this.option2_values ); }
public DataRow CreateOption(DsnConnection dsn, object parent_option_id, object name_id) { DataRow row = map.NewRow(); //row[map.option_idColumn] = option_id; row[map.parent_option_idColumn] = parent_option_id; row[map.name_idColumn] = name_id; map.Rows.Add(row); ScheduleCommit(dsn, map); return(row); }
public void CreateOption(DsnConnection dsn, object option_id, object parent_option_id, object name_id, String description) { DataRow row = map.NewRow(); row[map.option_idColumn] = option_id; row[map.parent_option_idColumn] = parent_option_id; row[map.name_idColumn] = name_id; row[map.descriptionColumn] = description; map.Rows.Add(row); DsnSQLUtil.CommitChanges(dsn, map); }
public DataRow CreateOption(DsnConnection dsn, object option_id, object parent_option_id, object name_id) { DataRow row = map.NewRow(); row[map.option_idColumn] = option_id; row[map.parent_option_idColumn] = parent_option_id; row[map.name_idColumn] = name_id; map.Rows.Add(row); DsnSQLUtil.CommitChanges(dsn, map); return(row); }
public void Commit(DsnConnection odbc) { odbc.BeginTransaction(); foreach (DataTable m in PersistantTables) { Log.log("Commiting " + m.ToString()); DsnSQLUtil.CommitChanges(odbc, m); } odbc.EndTransaction(); active_dataset.AcceptChanges(); }
public MySQLDataTable(DsnConnection dsn, DataTable table) { // copy table into myself... connection = dsn; TableName = table.TableName; Prefix = table.Prefix; foreach (DataColumn dc in table.Columns) { Columns.Add(dc); } DsnSQLUtil.CreateDataTable(connection, this); }
/// <summary> /// Creates a table with a prefix and a name, deault columns name_id and name_name /// </summary> /// <param name="prefix">Prefix to prepend to the table name (not column names)</param> /// <param name="name">Table name to create and fill</param> /// <param name="add_default_columns">Option to add default _id and _name column</param> /// <param name="auto_fill">Option to auto create/fill table with data</param> public RegSQLDataTable(DsnConnection dsn, string prefix, string name, bool trim_info, bool auto_fill, bool add_default_name) { this.connection = dsn; this.TableName = name; this.Prefix = (prefix == null) ? "" : prefix; AddDefaultColumns(trim_info, true, add_default_name); if (auto_fill) { Create(); Fill(); } this.RowDeleting += new DataRowChangeEventHandler(MySQLDataTable_RowDeleting); }
/// <summary> /// Creates a table with a prefix and a name, deault columns name_id and name_name /// </summary> /// <param name="prefix">Prefix to prepend to the table name (not column names)</param> /// <param name="name">Table name to create and fill</param> /// <param name="add_default_columns">Option to add default _id and _name column</param> /// <param name="auto_fill">Option to auto create/fill table with data</param> public MySQLDataTable(DsnConnection dsn, string prefix, string name, bool trim_info, bool auto_fill, bool add_default_name, bool add_default_id) { this.connection = dsn; this.TableName = name; this.Prefix = (prefix == null) ? "" : prefix; Init(); AddDefaultColumns(trim_info, add_default_id, add_default_name); if (auto_fill) { DsnSQLUtil.CreateDataTable(connection, this); Fill(); } }
internal void Delete() { DsnConnection dsn = this.section.db; //this.section.ds.map.Delete /* * dsn.KindExecuteNonQuery( "delete from " + OptionMap.Prefix + "values where option_id='" + this.sub_options.ID + "'" ); * dsn.KindExecuteNonQuery( "delete from " + OptionMap.Prefix + "blobs where option_id='" + this.sub_options.ID + "'" ); * dsn.KindExecuteNonQuery( "delete from " + OptionMap.Prefix + "map where option_id='" + this.sub_options.ID + "'" ); */ this.section.Remove(this); }
public MetaMySQLRelation( DsnConnection odbc, DataSet dataSet , DataTable table , String path_from_2_to_source , bool add_number , bool auto_fill , DataColumn[] extra_data ) : base( odbc, dataSet , table , path_from_2_to_source , add_number , auto_fill , extra_data ) { }
public object GetNameID(DsnConnection dsn, String name) { DataRow[] row = Select(nameColumn.ColumnName + "='" + name + "'"); if (row.Length == 0) { DataRow newname = NewRow(); //newname[name_idColumn] = 0; // auto fill newname[nameColumn] = name; Rows.Add(newname); DsnSQLUtil.CommitChanges(dsn, this); return(newname[name_idColumn]); } return(row[0][name_idColumn]); }
public MySQLNameTable(DsnConnection dsn, string prefix, string name, bool trim_info, bool auto_fill, bool simple_name) : base(dsn, prefix, name, true, trim_info, false) { // otherwise non-simple will be added by base initilalizer. if (simple_name) { DataColumn dc = this.Columns.Add(simple_name ? "name" : XDataTable.Name(this), typeof(string)); dc.Unique = true; } if (auto_fill) { DsnSQLUtil.CreateDataTable(connection, this); Fill(); } }
public object GetNameID(DsnConnection dsn, String name) { DataRow[] row = Select(nameColumn.ColumnName + "='" + name + "'"); if (row.Length == 0) { OptionMapDataset4 ds = this.DataSet as OptionMapDataset4; DataRow newname = NewRow(); newname[name_idColumn] = DsnConnection.GetGUID(dsn); newname[nameColumn] = name; Rows.Add(newname); ds.ScheduleCommit(dsn, this); return(newname[name_idColumn]); } return(row[0][name_idColumn]); }
/// <summary> /// Replaces the current connection with the passed connection, and invokes Fill. /// </summary> /// <param name="new_connection"></param> /// <param name="fill">if set, will invoke Fill()</param> /// <param name="sync">if set, will sync to database (relation table, probably the current relations more accurate</param> public void Reconnect(DsnConnection new_connection, bool fill, bool sync) { connection = new_connection; DsnSQLUtil.CreateDataTable(connection, this); if (fill) { this.BeginLoadData(); Clear(); Fill(); this.EndLoadData(); } else if (sync) { SyncToDatabase(new_connection); } }
void ScheduleCommit(DsnConnection dsn, DataTable table) { if (commit_pending.IndexOf(table) < 0) { pending_dsn = dsn; commit_pending.Add(table); if (delay_commit == null) { delay_commit = new Timer(); delay_commit.Tick += DelayCommit; delay_commit.Interval = 250; delay_commit.Start(); } } Log.log("Kicking timer."); target_tick = DateTime.Now.AddMilliseconds(250); }
//OptionMapDatasetTableAdapters.option2_mapTableAdapter map_adapter = new OptionMapDatasetTableAdapters.option2_mapTableAdapter(); public DataRow[] LoadMore(DsnConnection dsn, object uid) { DataRow[] rows; DsnSQLUtil.FillDataTable(dsn, map, map.parent_option_idColumn.ColumnName + "=" + DsnSQLUtil.GetSQLValue(dsn, map.option_idColumn, uid)); if (DsnSQLUtil.Compare(typeof(Guid), uid, Guid.Empty)) { rows = map.Select(map.option_idColumn.ColumnName + "='" + uid.ToString() + "'"); if (rows.Length == 0) { CreateOption(dsn, uid, uid, name.GetNameID(dsn, ".")); } rows = map.Select(map.parent_option_idColumn.ColumnName + "='" + uid.ToString() + "'and " + map.option_idColumn.ColumnName + "<>'" + uid.ToString() + "'"); } else { rows = map.Select(map.parent_option_idColumn.ColumnName + "='" + uid.ToString() + "'"); } return(rows); }
public static Guid GetGUID(DsnConnection dsn) { if (dsn == null) { return(Guid.NewGuid()); } if ((dsn.DbMode == DsnConnection.ConnectionMode.Odbc && dsn.DbFlavor == DsnConnection.ConnectionFlavor.MySqlNative) ) { Guid id = Guid.NewGuid(); Byte[] bytes = id.ToByteArray(); long ticks = DateTime.Now.Ticks / 10000; Byte[] tick_bytes = BitConverter.GetBytes(ticks); for (int n = 0; n < 6; n++) { bytes[0] = tick_bytes[5 - n]; } Guid COMB = new Guid(bytes); return(COMB); } else if (dsn.DbMode == DsnConnection.ConnectionMode.SQLServer || (dsn.DbMode == DsnConnection.ConnectionMode.Odbc && dsn.DbFlavor == DsnConnection.ConnectionFlavor.SQLServer)) { Guid id = Guid.NewGuid(); Byte[] bytes = id.ToByteArray(); long ticks = DateTime.Now.Ticks / 10000; Byte[] tick_bytes = BitConverter.GetBytes(ticks); for (int n = 0; n < 6; n++) { bytes[15 - n] = tick_bytes[n]; } Guid COMB = new Guid(bytes); return(COMB); } else { Log.log("Failed to recognize how to create optimal keys for database flavor and mode."); } return(new Guid()); }
public void Fill(DsnConnection dsn) { DsnSQLUtil.FillDataTable(dsn, name); DsnSQLUtil.FillDataTable(dsn, map, map.parent_option_idColumn.ColumnName + "=" + DsnSQLUtil.GetSQLValue(dsn, map.option_idColumn, Guid.Empty)); if (map.Rows.Count == 0) { DataRow map_root = map.NewRow(); map_root[map.option_idColumn] = Guid.Empty; map_root[map.parent_option_idColumn] = Guid.Empty; map_root[map.descriptionColumn] = "Option Map Root"; map_root[map.name_idColumn] = name.GetNameID(dsn, "."); map.Rows.Add(map_root); ScheduleCommit(dsn, map); } //OptionMapDatasetTableAdapters.option2_nameTableAdapter da = new OptionMapDatasetTableAdapters.option2_nameTableAdapter(); //da.Fill( this.option2_name ); //this.option2_valuesTableAdapter.Fill( this.option2_map ); //OptionMapDatasetTableAdapters.option2_valuesTableAdapter da3 = new OptionMapDatasetTableAdapters.option2_valuesTableAdapter(); //da3.Fill( this.option2_values ); }
/// <summary> /// Creates and opens a connection to the MySQL DSN. Throws an exception if connection could not be open /// </summary> static StaticDsnConnection() { String attempting = null; try { _dsn = new DsnConnection(attempting = INI.Default[Options.ProgramName]["ODBC", "MySQL"]); _dsn.disable_logging = INI.Default[Options.ProgramName]["Static database connection logging disabled", 1].Bool; } catch (Exception exc) { if (_dsn == null) { MessageBox.Show("Cannot open database [" + attempting + "].\n" + "Database Connection Setting in...\n{" + INI.Default.file + "}\n[" + Options.ProgramName + "]\nODBC=" + attempting + "\n\n" + exc.Message ); throw new NullReferenceException("Failed to connect to database", exc); } } }
/// <summary> /// provides the database conneciton also. /// </summary> /// <param name="db"></param> internal OptionMap(DsnConnection db) { this._db = db; if (db != null) { db.disable_logging = false; } this.fallback_ini = false; SetupTables(); this.read_branch = true; // don't know the type until we create the table storage if (root.option_map_key_type == typeof(Guid)) { ID = Guid.Empty; } else { ID = (int)0; } ReadBranch(); }
public void SetConnection(DsnConnection dsn, bool auto_create) { if (connection == null) { connection = dsn; if (dsn != null) { if (auto_create) { DsnSQLUtil.CreateDataTable(connection, this); } } } else { connection = dsn; if (auto_create) { DsnSQLUtil.CreateDataTable(connection, this); } } }
public String GetValue(DsnConnection dsn, object option_id) { DataRow[] row = values.Select(values.option_idColumn.ColumnName + "='" + option_id.ToString() + "'"); if (row.Length == 0) { List <DataRow> rows = DsnSQLUtil.FillDataTable(dsn, values, values.option_idColumn.ColumnName + "=" + DsnSQLUtil.GetSQLValue(dsn, values.option_idColumn, option_id), "segment"); if (rows == null || rows.Count == 0) { #if asdfasdf DataRow newval = values.NewRow(); newval[values.option_idColumn] = option_id; newval[values.stringColumn] = default_value; values.Rows.Add(newval); MySQLDataTable.CommitChanges(dsn, values); return(default_value); #endif //throw new Exception( "soemthign bad" ); return(null); } else { String tmp = null; foreach (DataRow row_add in rows) { tmp += row_add[values.stringColumn].ToString(); } return(tmp); } } else { String tmp = null; foreach (DataRow row_add in row) { tmp += row_add[values.stringColumn].ToString(); } return(tmp); } }
static void table_TableNewRow(object sender, DataTableNewRowEventArgs e) { MySQLDataTable that = e.Row.Table as MySQLDataTable; MySQLDataTable <T> that_t = e.Row.Table as MySQLDataTable <T>; IXDataTable xthat = e.Row.Table as IXDataTable; DsnConnection conn = null; if (that != null) { conn = that.connection; } else if (that_t != null) { conn = that_t.connection; } if (xthat != null) { e.Row[xthat.PrimaryKeyName] = DsnConnection.GetGUID(conn); } else { e.Row[XDataTable.ID(e.Row.Table)] = DsnConnection.GetGUID(conn); } }
public void SetValue(DsnConnection dsn, object option_id, String value) { int segment = 0; DataRow[] row = values.Select(values.option_idColumn.ColumnName + "='" + option_id.ToString() + "'"); if (row.Length == 0) { List <DataRow> rows = DsnSQLUtil.FillDataTable(dsn, values, values.option_idColumn.ColumnName + "=" + DsnSQLUtil.GetSQLValue(dsn, values.option_idColumn, option_id), "segment"); if (rows == null || rows.Count == 0) { if (value.Length > 99) { String tmp = value; while (tmp.Length > 99) { DataRow newval = values.NewRow(); newval[values.option_idColumn] = option_id; newval[values.stringColumn] = tmp.Substring(0, 99); tmp = tmp.Substring(99); newval[values.segmentColumn] = segment++; values.Rows.Add(newval); } value = tmp; } if (value.Length > 0) { DataRow newval = values.NewRow(); newval[values.option_idColumn] = option_id; newval[values.stringColumn] = value; newval[values.segmentColumn] = segment++; values.Rows.Add(newval); } } else { while (value.Length > 99) { if (segment < rows.Count) { rows[segment++][values.stringColumn] = value.Substring(0, 99); } else { DataRow newval = values.NewRow(); newval[values.option_idColumn] = option_id; newval[values.stringColumn] = value.Substring(0, 99); newval[values.segmentColumn] = segment++; values.Rows.Add(newval); } value = value.Substring(99); } if (segment < rows.Count) { rows[segment++][values.stringColumn] = value; } else { DataRow newval = values.NewRow(); newval[values.option_idColumn] = option_id; newval[values.stringColumn] = value.Substring(0, 99); newval[values.segmentColumn] = segment++; values.Rows.Add(newval); } while (segment < rows.Count) { rows[segment++].Delete(); } } } else { while (value.Length > 99) { if (segment < row.Length) { row[segment++][values.stringColumn] = value.Substring(0, 99); } else { DataRow newval = values.NewRow(); newval[values.option_idColumn] = option_id; newval[values.stringColumn] = value.Substring(0, 99); newval[values.segmentColumn] = segment++; values.Rows.Add(newval); } value = value.Substring(99); } if (segment < row.Length) { row[segment++][values.stringColumn] = value; } else { DataRow newval = values.NewRow(); newval[values.option_idColumn] = option_id; newval[values.stringColumn] = value; newval[values.segmentColumn] = segment++; values.Rows.Add(newval); } while (segment < row.Length) { row[segment++].Delete(); } } ScheduleCommit(dsn, values); }
public MySQLNameTable(DsnConnection dsn, string prefix, string name, bool trim_info, bool auto_fill) : base(dsn, prefix, name, true, trim_info, auto_fill, true) { }
static public void AppendToDatabase(DsnConnection connection, DataTable table) { if (connection == null) { return; } String PrimaryKeyName = XDataTable.ID(table); IXDataTable xdataTable = table as IXDataTable; Type key_type = table.Columns[PrimaryKeyName].DataType; if (xdataTable != null) { xdataTable.filling = true; } Log.log("AppendToDatabase should check primary key type - if it's Guid, then min/max are irrelavent"); object min_local_id = table.Compute("min(" + PrimaryKeyName + ")", null); object max_local_id = table.Compute("max(" + PrimaryKeyName + ")", null); // no rows to commit. if (min_local_id.GetType() == typeof(DBNull)) { return; } if (key_type == typeof(Int32)) { object max_real_id = connection.ExecuteScalar("select max(" + PrimaryKeyName + ") from " + connection.sql_quote_open + table.Prefix + table.TableName + connection.sql_quote_close); if ((max_real_id == null) || (max_real_id.GetType() == typeof(DBNull))) { // if (Convert.ToInt32(min_local_id) != 1) { int n = 1; foreach (DataRow row in table.Rows) { row[PrimaryKeyName] = n; n++; } } } else { if (Convert.ToInt32(max_real_id) >= Convert.ToInt32(min_local_id) && Convert.ToInt32(max_real_id) <= Convert.ToInt32(max_local_id)) { int final_id = Convert.ToInt32(max_real_id) + table.Rows.Count + 1; if (final_id < Convert.ToInt32(max_local_id)) { int n = Convert.ToInt32(max_real_id) + 1; // while moving row ID's we may duplicate, so... look ahead... foreach (DataRow row in table.Rows) { DataRow[] conflict = table.Select(PrimaryKeyName + "=" + n); if (conflict.Length > 0) { int old_id = Convert.ToInt32(row[PrimaryKeyName]); conflict[0][PrimaryKeyName] = 0; row[PrimaryKeyName] = n; conflict[0][PrimaryKeyName] = old_id; } else { row[PrimaryKeyName] = n; } n++; } //object o = null; //o.GetType(); } else { int r; for (r = table.Rows.Count - 1; r >= 0; r--) { table.Rows[r][PrimaryKeyName] = final_id; final_id--; } } } else { int n = Convert.ToInt32(max_real_id) + 1; foreach (DataRow row in table.Rows) { row[PrimaryKeyName] = n; n++; } } } } else if (key_type == typeof(Guid)) { foreach (DataRow row in table.Rows) { row[PrimaryKeyName] = connection.GetGUID(); } } DsnSQLUtil.InsertAllRows(connection, table); if (xdataTable != null) { xdataTable.filling = false; } }
/// <summary> /// Just a normal DataTable with additional Methods? /// </summary> public MySQLDataTable(DsnConnection connection) { this.connection = connection; Init(); }
public static OptionMap Database(DsnConnection db) { OptionMap tmp_options = new OptionMap(db); return(tmp_options); }
public static Guid GetCOMB() { return(DsnConnection.GetGUID(null)); }
public OptionNames(DsnConnection dsn) : base(dsn, OptionMap.Prefix, NameColumn, true, true) { }