Example #1
0
        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();
        }
Example #2
0
        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());
 }