예제 #1
0
 public NpgQuery DeleteWhere(string table, IWhereOp whereOp)
 {
     var parameters = new List<NpgsqlParameter>();
     var text = string.Format("DELETE FROM {0} WHERE {1}",
         Quote(table),
         whereOp.Build(parameters));
     return new NpgQuery(text, parameters.ToArray());
 }
예제 #2
0
        public NpgQuery DeleteWhere(string table, IWhereOp whereOp)
        {
            var parameters = new List <NpgsqlParameter>();
            var text       = string.Format("DELETE FROM {0} WHERE {1}",
                                           Quote(table),
                                           whereOp.Build(parameters));

            return(new NpgQuery(text, parameters.ToArray()));
        }
예제 #3
0
        public NpgQuery Select(
            string table, string[] columnsToReturn,
            IWhereOp whereOp,
            string[] columnsOfOrder,
            bool asc,
            int limit,
            bool distinct)
        {
            var parameters = new List <NpgsqlParameter>();
            var text       = Select(parameters, table, columnsToReturn, whereOp, columnsOfOrder, asc, limit, distinct);

            return(new NpgQuery(text, parameters.ToArray()));
        }
예제 #4
0
        public NpgQuery UpdateWhere(string table, IWhereOp whereOp, string[] columns, object[] values)
        {
            var setParameters = new NpgsqlParameter[columns.Length];
            var set           = new string[columns.Length];

            for (var i = 0; i < set.Length; i++)
            {
                var column        = columns[i];
                var parameterName = SetParameterNamePrefix + column;
                set[i]           = Quote(column) + " = :" + parameterName;
                setParameters[i] = new NpgsqlParameter(parameterName, values[i]);
            }
            var parameters = new List <NpgsqlParameter>();
            var scriptRow  = string.Format(
                "UPDATE {0} SET {1} WHERE {2}",
                Quote(table),
                string.Join(", ", set),
                whereOp.Build(parameters));

            parameters.AddRange(setParameters);
            return(new NpgQuery(scriptRow, parameters.ToArray()));
        }
예제 #5
0
        public string Select(
            IList <NpgsqlParameter> parameters,
            string table, string[] columnsToReturn,
            IWhereOp whereOp,
            string[] columnsOfOrder,
            bool asc,
            int limit,
            bool distinct)
        {
            var text = new StringBuilder();

            text.Append("SELECT ");
            if (distinct)
            {
                text.Append("DISTINCT ");
            }
            text.AppendFormat(
                "{0} FROM {1}",
                string.Join(", ", columnsToReturn.Select(Quote)),
                Quote(table));
            if (whereOp != null)
            {
                text.AppendFormat(" WHERE {0}", whereOp.Build(parameters));
            }
            if (columnsOfOrder != null)
            {
                string sortDirection = asc ? " ASC" : " DESC";
                text.AppendFormat(
                    " ORDER BY {0}",
                    string.Join(", ", columnsOfOrder.Select(c => Quote(c) + sortDirection)));
            }

            if (limit != -1)
            {
                text.AppendFormat(" LIMIT {0}", limit);
            }
            return(text.ToString());
        }
예제 #6
0
 public string Select(
     IList<NpgsqlParameter> parameters,
     string table, string[] columnsToReturn,
     IWhereOp whereOp,
     string[] columnsOfOrder,
     bool asc,
     int limit,
     bool distinct)
 {
     var text = new StringBuilder();
     text.Append("SELECT ");
     if (distinct)
     {
         text.Append("DISTINCT ");
     }
     text.AppendFormat(
         "{0} FROM {1}",
         string.Join(", ", columnsToReturn.Select(Quote)),
         Quote(table));
     if (whereOp != null)
     {
         text.AppendFormat(" WHERE {0}", whereOp.Build(parameters));
     }
     if (columnsOfOrder != null)
     {
         var sortDirection = asc ? " ASC" : " DESC";
         text.AppendFormat(
             " ORDER BY {0}",
             string.Join(", ", columnsOfOrder.Select(c => Quote(c) + sortDirection)));
     }
     if (limit != -1)
     {
         text.AppendFormat(" LIMIT {0}", limit);
     }
     return text.ToString();
 }
예제 #7
0
 public NpgQuery UpdateWhere(string table, IWhereOp whereOp, string[] columns, object[] values)
 {
     var setParameters = new NpgsqlParameter[columns.Length];
     var set = new string[columns.Length];
     for (var i = 0; i < set.Length; i++)
     {
         var column = columns[i];
         var parameterName = SetParameterNamePrefix + column;
         set[i] = Quote(column) + " = :" + parameterName;
         setParameters[i] = new NpgsqlParameter(parameterName, values[i]);
     }
     var parameters = new List<NpgsqlParameter>();
     var scriptRow = string.Format(
         "UPDATE {0} SET {1} WHERE {2}",
         Quote(table),
         string.Join(", ", set),
         whereOp.Build(parameters));
     parameters.AddRange(setParameters);
     return new NpgQuery(scriptRow, parameters.ToArray());
 }
예제 #8
0
 public NpgQuery Select(
     string table, string[] columnsToReturn,
     IWhereOp whereOp,
     string[] columnsOfOrder,
     bool asc,
     int limit,
     bool distinct)
 {
     var parameters = new List<NpgsqlParameter>();
     var text = Select(parameters, table, columnsToReturn, whereOp, columnsOfOrder, asc, limit, distinct);
     return new NpgQuery(text, parameters.ToArray());
 }
예제 #9
0
 private Alarm[] GetAlarms(
     NpgsqlConnection connection, IWhereOp alarmsWhereOp, CriteriaType criteriaType, AlarmSampleId criteria, int maxCount)
 {
     IWhereOp whereOp;
     bool asc;
     switch (criteriaType)
     {
         case CriteriaType.DownFromInfinity:
             whereOp = null;
             asc = false;
             break;
         case CriteriaType.DownFrom:
             whereOp = new Or(
                 new And(new Eq(DbStr.StartTime, criteria.StartTime.Ticks), new Lt(DbStr.AlarmId, criteria.AlarmId)),
                 new Lt(DbStr.StartTime, criteria.StartTime.Ticks));
             asc = false;
             break;
         case CriteriaType.DownFromOrEqual:
             whereOp = new Or(
                 new And(new Eq(DbStr.StartTime, criteria.StartTime.Ticks), new Le(DbStr.AlarmId, criteria.AlarmId)),
                 new Lt(DbStr.StartTime, criteria.StartTime.Ticks));
             asc = false;
             break;
         case CriteriaType.UpFromInfinity:
             whereOp = null;
             asc = true;
             break;
         case CriteriaType.UpFrom:
             whereOp = new Or(
                 new And(new Eq(DbStr.StartTime, criteria.StartTime.Ticks), new Gt(DbStr.AlarmId, criteria.AlarmId)),
                 new Gt(DbStr.StartTime, criteria.StartTime.Ticks));
             asc = true;
             break;
         case CriteriaType.UpFromOrEqual:
             whereOp = new Or(
                 new And(new Eq(DbStr.StartTime, criteria.StartTime.Ticks), new Ge(DbStr.AlarmId, criteria.AlarmId)),
                 new Gt(DbStr.StartTime, criteria.StartTime.Ticks));
             asc = true;
             break;
         default:
             throw new NotSupportedException("CriteriaType " + criteriaType);
     }
     if (alarmsWhereOp != null)
     {
         whereOp = whereOp == null ? alarmsWhereOp : new And(whereOp, alarmsWhereOp);
     }
     var query = _npgQueryHelper.Select(
         _tableName, _columns, whereOp, new[] { DbStr.StartTime, DbStr.AlarmId }, asc, Math.Min(maxCount, MaxAlarmsToRetrieve));
     var alarms = _npgHelper.ExecuteReader(connection, query, reader =>
         new Alarm(reader.GetDateTimeFormTicks(0), reader.GetInt32(1))
             {
                 EndTime = reader.GetNullableDateTimeFormTicks(2),
                 AcknowledgeTime = reader.GetNullableDateTimeFormTicks(3),
                 UserId = reader.GetNullableInt64(4)
             });
     return asc ? alarms.Reverse().ToArray() : alarms;
 }
예제 #10
0
파일: Not.cs 프로젝트: guozanhua/phmi
 public Not(IWhereOp op)
 {
     _op = op;
 }
예제 #11
0
 public Not(IWhereOp op)
 {
     _op = op;
 }
예제 #12
0
        private Alarm[] GetAlarms(
            NpgsqlConnection connection, IWhereOp alarmsWhereOp, CriteriaType criteriaType, AlarmSampleId criteria, int maxCount)
        {
            IWhereOp whereOp;
            bool     asc;

            switch (criteriaType)
            {
            case CriteriaType.DownFromInfinity:
                whereOp = null;
                asc     = false;
                break;

            case CriteriaType.DownFrom:
                whereOp = new Or(
                    new And(new Eq(DbStr.StartTime, criteria.StartTime.Ticks), new Lt(DbStr.AlarmId, criteria.AlarmId)),
                    new Lt(DbStr.StartTime, criteria.StartTime.Ticks));
                asc = false;
                break;

            case CriteriaType.DownFromOrEqual:
                whereOp = new Or(
                    new And(new Eq(DbStr.StartTime, criteria.StartTime.Ticks), new Le(DbStr.AlarmId, criteria.AlarmId)),
                    new Lt(DbStr.StartTime, criteria.StartTime.Ticks));
                asc = false;
                break;

            case CriteriaType.UpFromInfinity:
                whereOp = null;
                asc     = true;
                break;

            case CriteriaType.UpFrom:
                whereOp = new Or(
                    new And(new Eq(DbStr.StartTime, criteria.StartTime.Ticks), new Gt(DbStr.AlarmId, criteria.AlarmId)),
                    new Gt(DbStr.StartTime, criteria.StartTime.Ticks));
                asc = true;
                break;

            case CriteriaType.UpFromOrEqual:
                whereOp = new Or(
                    new And(new Eq(DbStr.StartTime, criteria.StartTime.Ticks), new Ge(DbStr.AlarmId, criteria.AlarmId)),
                    new Gt(DbStr.StartTime, criteria.StartTime.Ticks));
                asc = true;
                break;

            default:
                throw new NotSupportedException("CriteriaType " + criteriaType);
            }
            if (alarmsWhereOp != null)
            {
                whereOp = whereOp == null ? alarmsWhereOp : new And(whereOp, alarmsWhereOp);
            }
            var query = _npgQueryHelper.Select(
                _tableName, _columns, whereOp, new[] { DbStr.StartTime, DbStr.AlarmId }, asc, Math.Min(maxCount, MaxAlarmsToRetrieve));
            var alarms = _npgHelper.ExecuteReader(connection, query, reader =>
                                                  new Alarm(reader.GetDateTimeFormTicks(0), reader.GetInt32(1))
            {
                EndTime         = reader.GetNullableDateTimeFormTicks(2),
                AcknowledgeTime = reader.GetNullableDateTimeFormTicks(3),
                UserId          = reader.GetNullableInt64(4)
            });

            return(asc ? alarms.Reverse().ToArray() : alarms);
        }