java mysql select函数总是返回0

时间:2012-12-14 13:27:48

标签: java mysql sql database select

代码:

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 columnbigint(20)类型

我可以看到ex列中有一个数字。

是4294967295

但为什么我总是0回来?

2 个答案:

答案 0 :(得分:2)

你必须得到一个长期。因为你的数量超过了int范围。

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

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

应该有用。

答案 1 :(得分:0)

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