0

代码:

public int getLastGotKill()
{
    Connection con = null;
    int last_pvp_time = 0;
    try
    {
        con = L2DatabaseFactory.getInstance().getConnection(false);
        PreparedStatement statement;
        statement = con.prepareStatement("select last_got_kill from characters where obj_Id=?");
        statement.setInt(1, getObjectId());

        ResultSet rset = statement.executeQuery();
        while(rset.next())
        {
            last_pvp_time = rset.getInt("last_got_kill");
            _log.info("last pvp time is : " + last_pvp_time);
        }
        rset.close();
        rset = null;
        statement.close();
        statement = null;
    }
    catch(Exception e)
    {
        if(Config.ENABLE_ALL_EXCEPTIONS)
            e.printStackTrace();
    }
    finally
    {
        CloseUtil.close(con);
        con = null;
    }
    return last_pvp_time;
}

因此,当我调用此函数时,它会进入while loop内部,try{}但是当我尝试打印所选列的值时,它会打印 0,因此它返回 0 ...

last_got_kill column在字符表中是一种bigint(20)类型

我可以看到该列中有一个数字。4294967295 是

但为什么我总是得到 0 回来?

4

2 回答 2

2

你必须得到一个 long 。因为您的数字超出了 int 范围。

Integer.MAX_VALUE is 2147483647这肯定小于 4294967295 Long.MAX_VALUE however is 9223372036854775807似乎适合您的情况。

   long last_pvp_time = rset.getLong("last_got_kill");

应该管用。

于 2012-12-14T13:30:49.113 回答
0

4294967295 太大而无法放入 int。尝试长:rset.getLong("last_got_kill")

于 2012-12-14T13:31:20.190 回答