Ограничьте размер Списка (T) - VB.NET

Во-первых, о вашем неверном значении даты. Это правильно, потому что когда вы пропускаете '' вокруг 2020-03-20, SQL Server делает неявное преобразование типа данных . Следующий пример демонстрирует это:

Неявное преобразование:

DECLARE @date datetime

SELECT @date = 2020-03-20
SELECT @date

SELECT DATEADD(day, 2020-03-20, 0)

Вывод:

1905-06-21 00:00:00.000

Во-вторых, если вы хотите передать значения даты и времени, просто используйте соответствующий формат - 'yyyy-MM-dd', 'yyyyMMdd hh:nn:ss' или 'yyyy-MM-ddThh:nn:ss':

"UPDATE TABLENAME set COL1 = ".

Во-первых, о вашем неверном значении даты. Это правильно, потому что когда вы пропускаете '' вокруг 2020-03-20, SQL Server делает неявное преобразование типа данных . Следующий пример демонстрирует это:

Неявное преобразование:

[110]

Вывод:

[111]

Во-вторых, если вы хотите передать значения даты и времени, просто используйте соответствующий формат - 'yyyy-MM-dd', 'yyyyMMdd hh:nn:ss' или 'yyyy-MM-ddThh:nn:ss':

[112]

Я не знаю, как вы подключаетесь к SQL Server, но попробуйте использовать подготовленные операторы . [ 1117]

Обновление (Извлечение и отправка значений даты и времени с и на SQL Server):

На основе драйвера, который вы используете для подключения к SQL Server, вы можете получить значения даты и времени как текст или как объект даты и времени PHP (если вы используете драйвер PHP для SQL Server), но вам нужно отправить эти значения в виде текста. В вашем случае значения возвращаются в виде текста. Поэтому вам нужно сгенерировать универсальное значение даты и времени (например, в 'yyyy-MM-ddThh:nn:ss') как текст.

В следующем примере показаны некоторые допустимые и недействительные комбинации для оператора UPDATE T-SQL для вашего столбца datetime. Он протестирован с драйвером PHP для SQL Server 4.0.3.


POST[VAL1].", COL2 = ".

Во-первых, о вашем неверном значении даты. Это правильно, потому что когда вы пропускаете '' вокруг 2020-03-20, SQL Server делает неявное преобразование типа данных . Следующий пример демонстрирует это:

Неявное преобразование:

[110]

Вывод:

[111]

Во-вторых, если вы хотите передать значения даты и времени, просто используйте соответствующий формат - 'yyyy-MM-dd', 'yyyyMMdd hh:nn:ss' или 'yyyy-MM-ddThh:nn:ss':

[112]

Я не знаю, как вы подключаетесь к SQL Server, но попробуйте использовать подготовленные операторы . [ 1117]

Обновление (Извлечение и отправка значений даты и времени с и на SQL Server):

На основе драйвера, который вы используете для подключения к SQL Server, вы можете получить значения даты и времени как текст или как объект даты и времени PHP (если вы используете драйвер PHP для SQL Server), но вам нужно отправить эти значения в виде текста. В вашем случае значения возвращаются в виде текста. Поэтому вам нужно сгенерировать универсальное значение даты и времени (например, в 'yyyy-MM-ddThh:nn:ss') как текст.

В следующем примере показаны некоторые допустимые и недействительные комбинации для оператора UPDATE T-SQL для вашего столбца datetime. Он протестирован с драйвером PHP для SQL Server 4.0.3.


POST[VAL2].", COL3 = '2020-03-20' WHERE COL0 = 'VAL0'"

Я не знаю, как вы подключаетесь к SQL Server, но попробуйте использовать подготовленные операторы . [ 1117]

Обновление (Извлечение и отправка значений даты и времени с и на SQL Server):

На основе драйвера, который вы используете для подключения к SQL Server, вы можете получить значения даты и времени как текст или как объект даты и времени PHP (если вы используете драйвер PHP для SQL Server), но вам нужно отправить эти значения в виде текста. В вашем случае значения возвращаются в виде текста. Поэтому вам нужно сгенерировать универсальное значение даты и времени (например, в 'yyyy-MM-ddThh:nn:ss') как текст.

В следующем примере показаны некоторые допустимые и недействительные комбинации для оператора UPDATE T-SQL для вашего столбца datetime. Он протестирован с драйвером PHP для SQL Server 4.0.3.


7
задан Ryan Kohn 6 September 2012 в 13:44
поделиться

5 ответов

Существует несколько различных способов добавить вещи к a List<T>: Добавьте, AddRange, Вставьте и т.д.

Рассмотрите решение, которое наследовалось Collection<T>:

Public Class LimitedCollection(Of T)
    Inherits System.Collections.ObjectModel.Collection(Of T)

    Private _Capacity As Integer
    Public Property Capacity() As Integer
        Get
            Return _Capacity
        End Get
        Set(ByVal value As Integer)
            _Capacity = value
        End Set
    End Property

    Protected Overrides Sub InsertItem(ByVal index As Integer, ByVal item As T)
        If Me.Count = Capacity Then
            Dim message As String = 
                String.Format("List cannot hold more than {0} items", Capacity)
            Throw New InvalidOperationException(message)
        End If
        MyBase.InsertItem(index, item)
    End Sub

End Class

Таким образом, способность уважают ли Вы Add или Insert.

10
ответ дан 6 December 2019 в 06:15
поделиться

Необходимо реализовать собственный список/набор, если необходимо ограничить максимальное количество объекта в нем.

0
ответ дан 6 December 2019 в 06:15
поделиться

Нет никакого встроенного способа ограничить размер Списка (T). Свойство Capacity просто изменяет размер буфера underyling, не ограничивая его.

Если Вы захотите ограничить размер Списка, то необходимо будет создать обертку, которая проверяет на недопустимый размер. Например,

Public Class RestrictedList(Of T)
  Private _list as New List(Of T)
  Private _limit as Integer
  Public Property Limit As Integer 
    Get 
      return _limit
    End Get
    Set 
      _limit = Value
    End Set
  End Property

  Public Sub Add(T value) 
    if _list.Count = _limit Then
      Throw New InvalidOperationException("List at limit")
    End If
    _list.Add(value)
  End Sub
End Class
14
ответ дан 6 December 2019 в 06:15
поделиться

Список не имеет такого средства.

Полный материал является просто оптимизацией производительности.

Вы оказываетесь перед необходимостью класс самокрутки, происходите от списка и переопределяете Добавить реализацию.

0
ответ дан 6 December 2019 в 06:15
поделиться

Вы захотите получить новое LimitedList и тень методы добавления. Что-то вроде этого запустит Вас.

public class LimitedList<T> : List<T>
{
    private int limit;

    public LimitedList(int limit)
    {
        this.limit = limit;
    }

    public new void Add(T item)
    {
        if (Count < limit)
            base.Add(item);
    }
}

Просто реализованный Вы находитесь в VB, я переведу вскоре

Редактирование Видит Jared для версии VB. Я оставлю это здесь в случае, если кто-то хочет, чтобы версия C# начала с.

Если это имеет значение мой проявляет немного отличающийся подход, поскольку он расширяет класс Списка вместо того, чтобы инкапсулировать его. То, которые приближаются, Вы хотите использовать, зависит от Вашей ситуации.

5
ответ дан 6 December 2019 в 06:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: