public void InsertRow(DataRow row) { List <string> columns = new List <string>(); List <object> values = new List <object>(); List <SqlExpr> where = new List <SqlExpr>(); var _columns = TableName.GetTableSchema().Columns; foreach (DataColumn column in table.Columns) { object value = row[column]; string name = column.ColumnName; IColumn _column = _columns[column.ColumnName]; if (column == colRowID || _column.IsIdentity) { continue; } if (value != DBNull.Value) { columns.Add(name); values.Add(value); where.Add(name.Equal(value)); } else if (!_column.Nullable) //add default value to COLUMN NOT NULL { Type type = _column.CType.ToType(); value = GetDefault(type); columns.Add(name); values.Add(value); where.Add(name.Equal(value)); } } var builder = new SqlBuilder().INSERT(TableName, columns.ToArray()).VALUES(values.ToArray()); new SqlCmd(builder).ExecuteNonQuery(); if (colLoc != null) { builder = new SqlBuilder().SELECT().COLUMNS(PHYSLOC).FROM(TableName).WHERE(where.AND()); var loc = new SqlCmd(builder).FillObject <byte[]>(); LOC.Add(loc); //todo: load identity } row[colRowID] = table.Rows.Count - 1; //this will trigger events ColumnChanged or RowChanged row.AcceptChanges(); }
public void InsertRow(DataRow row) { List<string> columns = new List<string>(); List<object> values = new List<object>(); List<SqlExpr> where = new List<SqlExpr>(); var _columns = TableName.GetTableSchema().Columns; foreach (DataColumn column in table.Columns) { object value = row[column]; string name = column.ColumnName; IColumn _column = _columns[column.ColumnName]; if (column == colRowID) continue; if (value != DBNull.Value) { columns.Add(name); values.Add(value); where.Add(name.Equal(value)); } else if (!_column.Nullable) //add default value to COLUMN NOT NULL { Type type = _column.CType.ToType(); value = GetDefault(type); columns.Add(name); values.Add(value); where.Add(name.Equal(value)); } } var builder = new SqlBuilder().INSERT(TableName, columns.ToArray()).VALUES(values.ToArray()); new SqlCmd(builder).ExecuteNonQuery(); builder = new SqlBuilder().SELECT.COLUMNS(SqlExpr.PHYSLOC).FROM(TableName).WHERE(where.AND()); var loc = new SqlCmd(builder).FillObject<byte[]>(); LOC.Add(loc); row[colRowID] = table.Rows.Count - 1; //this will trigger events ColumnChanged or RowChanged row.AcceptChanges(); }
/// <summary> /// NANDs all the values of the list together /// </summary> /// <param name="values"></param> /// <returns></returns> public static bool NAND(this List <bool> values) { return(!values.AND()); }