Переполнение в классике ASP

Используя ORM удалит зависимости из Вашего кода конкретного диалекта SQL. Вместо того, чтобы непосредственно взаимодействовать с базой данных Вы будете взаимодействовать с уровнем абстракции, который обеспечивает изоляцию между Вашим кодом и реализацией базы данных. Кроме того, ORMs обычно обеспечивают защиту от Внедрения SQL путем построения параметризированных запросов. Предоставленный Вы могли сделать это сами, но хорошо иметь гарантию платформы.

ORMs работают одним из двух способов: некоторые обнаруживают схему от существующей базы данных - разработчик LINQToSQL делает это - другие требуют, чтобы Вы отобразили свой класс на таблицу. В обоих случаях, как только схема была отображена, ORM может быть в состоянии создать (воссоздают) Вашу структуру базы данных для Вас. Полномочия DB, вероятно, все еще должны быть применены вручную или через пользовательский SQL.

Как правило, учетные данные, предоставленные программно через API или использование конфигурационного файла - или оба, значения по умолчанию, прибывающие из конфигурационного файла, но способный быть переопределением в коде.

5
задан AnthonyWJones 16 September 2009 в 20:09
поделиться

2 ответа

Ответ, похоже, находится на PRB: «Переполнение» с целочисленным делением и оператором MOD :

Раздел справки Visual Basic для Оператор Mod и целочисленное деление operator () объясняет, что если плавающий номера точек используются в выражение, они преобразуются в Сначала хочет. Таким образом, если плавающий номер точки больше, чем максимальное значение Long (2 147 483 647), или меньше минимальное значение на долгое время (-2 147 483 648), ошибка переполнения произойдет.

Здесь также доступен ответ:

Следующий код демонстрирует, как выполнить целочисленное деление и по модулю арифметика, когда размер операнда достаточно велик, чтобы вызвать переполнение:

Dim dblX as Double
Dim dblY as Double
dblX = 2147483648                ' numerator
dblY = 123                       ' denominator

' round off the numerator and denominator (ensure number is .0)
dblX = INT(dblX + .5)         
dblY = INT(dblY + .5)      

' Emulate integer division
MsgBox FIX(dblX / dblY)             
' Emulate modulo arithmetic
MsgBox dblX - ( dblY * FIX(dblX / dblY) )
4
ответ дан 14 December 2019 в 19:19
поделиться

Я считаю, что, когда вы не определяете значения конкретно, ASP Classic принимает числовое значение как int (а это всего 32767). Попробуйте сделать ваши значения longs

 Function doRound1(x1)
  x1 = CDbl(x1)
  denom1 = CDbl(5)
  y1 = denom1 - x1 mod denom1
  if y1 <> denom1 then
    x1= x1+y1
  end if

  doRound1=x1
 End function

Примечание : Я на самом деле не тестировал это.

1
ответ дан 14 December 2019 в 19:19
поделиться
Другие вопросы по тегам:

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