zoukankan      html  css  js  c++  java
  • SQL语句中 int 溢出 + Asp语句中 Long 溢出

    晚上5点多,同事在QQ告诉我,一个用户向他反应,在他登录的时候显示错误信息,我们在管理平台查看该用户的基本信息时,也显示错误信息。

    经过初步分析,原来是在执行 SQL语句的时候发生Int溢出:

    sql = "select sum(fileSize) as fsTotal from pic where userID = 1632"

    本来这段SQL是用来取得一个用户之前上传的所有文件大小的合计数。

    fileSize 字段类型 int

    当用户上传的文件累计大小超过 2G(2147483648字节),再执行 sum(fileSize) 就会发生Int溢出。

    找到问题的原因后,开始修改 sql语句:

    sql = "select sum(cast(fileSize as bigint)) as fsTotal from pic where userID = 1632"

    修改后,再测试发现还是有错误,不过这个时候的错误不是因为这段SQL,而是来自 asp 的 long 溢出。

    sql = "select sum(cast(fileSize as bigint)) as fsTotal from pic where userID = 1632"
    set re=conn.execute(sql)
    if not re.eof then
        fsTotal = re.fields("fsTotal ")
        fsTotal = fsTotal / 1024 / 1024 '转换成MB - 发生 long 溢出
    end if

    修改代码:

    fsTotal = re.fields("fsTotal ")
    fsTotal = cdbl(fsTotal ) '先转换成 double型,再进行下一步的操作
    fsTotal = fsTotal / 1024 / 1024 '转换成MB

    -----------------------------------------------------------------------------------------------------------

    SQL Server,int类型值最大2147483647(2^31 - 1)
    ASP,Long (长整型) 4 个字节 -2,147,483,648 到 2,147,483,647

    2010-11-03

  • 相关阅读:
    NOI2018 退役记
    APIO2018 被屠记
    CTSC2018 被屠记
    SNOI2018 退役记
    O(1) long long a*b%p
    prufer编码
    杜教筛
    GCC卡常
    NOIP2017滚粗记
    UVA 10763 Foreign Exchange
  • 原文地址:https://www.cnblogs.com/personnel/p/4583023.html
Copyright © 2011-2022 走看看