代码:
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)
类型
我可以看到ex列中有一个数字。
是4294967295但为什么我总是0回来?
答案 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")