Beispiel #1
0
 /// <summary>
 /// Возвращает значение указанного параметра.
 /// </summary>
 /// <param name="id">Идентификатор параметра, значение которого следует получить.</param>
 public string this[InfoId id]
 {
     get
       {
     if (!this.Items.ContainsKey(id))
     {
       // нет в памяти данных для этого ключа, получаем из базы
       this.Items.Add(id, this.GetValue(id));
     }
     return this.Items[id];
       }
 }
Beispiel #2
0
 /// <summary>
 /// Проверяет, является ли текущий экземпляр эквивалентом указанному экземпляру <see cref="InfoId"/>.
 /// </summary>
 /// <param name="value">Экземпляр <see cref="InfoId"/>, с которым следует провести сравнение.</param>
 public bool Equals(InfoId value)
 {
     return this.Value.Equals(value.Value);
 }
Beispiel #3
0
 /// <summary>
 /// Получает из базы и возвращает значение по указанному ключу.
 /// </summary>
 /// <param name="key">Ключ, значение для которого следует получить.</param>
 private string GetValue(InfoId id)
 {
     using (var client = new SqlDbCeClient(this.CurrentUser.ConnectionString))
       {
     client.CommandText = "SELECT [value] FROM [info] WHERE [id_info] = @id";
     client.Parameters.Add("@id", SqlDbType.SmallInt).Value = Convert.ToInt16(id);
     object result = client.ExecuteScalar();
     if (result == DBNull.Value) { return null; }
     return Convert.ToString(result);
       }
 }
Beispiel #4
0
        /// <summary>
        /// Добавляет, либо обновляет информацию.
        /// </summary>
        /// <param name="id">Идентификатор записи (см. список констант).</param>
        /// <param name="value">Значение, не более 30 символов.</param>
        /// <param name="nodb">Позволяет запретить запись данных в базу. По умолчанию значение <c>false</c> - данные в базу записываются сразу.</param>
        /// <remarks>
        /// <para>
        /// Если значение параметра <paramref name="nodb"/> равно <c>true</c>, то запись изменений в базу будет произведена только при вызове метода <see cref="Flush"/>.
        /// </para>
        /// </remarks>
        public void Set(InfoId id, string value, bool nodb = false)
        {
            if (!String.IsNullOrEmpty(value) && value.Length > 30)
              {
            //throw new ArgumentOutOfRangeException(value);
            value = value.Substring(30);
              }

              // добавляем или меняем
              if (!this.Items.ContainsKey(id))
              {
            this.Items.Add(id, value);
              }
              else
              {
            this.Items[id] = value;
              }

              // если запрещено сохранение в базу, выходим
              if (nodb)
              {
            if (!this.ToSave.Contains(id))
            {
              this.ToSave.Add(id);
            }
            return;
              }

              using (var client = new SqlDbCeClient(this.CurrentUser.ConnectionString))
              {
            client.CommandText = "SELECT COUNT([id_info]) FROM [info] WHERE [id_info] = @id";
            client.Parameters.Add("@id", SqlDbType.SmallInt).Value = Convert.ToInt16(id);
            client.Parameters.Add("@value", SqlDbType.NVarChar, 30).Value = value;

            if (Convert.ToInt32(client.ExecuteScalar()) == 0)
            {
              // добавляем
              client.CommandText = "INSERT INTO [info] ([id_info], [value]) VALUES (@id, @value)";
            }
            else
            {
              // обновляем
              client.CommandText = "UPDATE [info] SET [value] = @value WHERE [id_info] = @id";
            }

            client.ExecuteNonQuery();
              }
        }
Beispiel #5
0
 /// <summary>
 /// Добавляет, либо обновляет информацию.
 /// </summary>
 /// <param name="id">Идентификатор записи (см. список констант).</param>
 /// <param name="value">Значение, не более 20 символов.</param>
 /// <param name="nodb">Позволяет запретить запись данных в базу. По умолчанию значение <c>false</c> - данные в базу записываются сразу.</param>
 public void Set(InfoId id, Version value, bool nodb = false)
 {
     this.Set(id, value.ToString(), nodb);
 }
Beispiel #6
0
 /// <summary>
 /// Добавляет, либо обновляет информацию.
 /// </summary>
 /// <param name="id">Идентификатор записи (см. список констант).</param>
 /// <param name="value">Значение, не более 20 символов.</param>
 public void Set(InfoId id, DateTime value, bool nodb = false)
 {
     this.Set(id, value.ToString(), nodb);
 }