阅读背景:

Mysql + JDBC + Linux:executeQuery不应该返回空结果集

来源:互联网 

I have following code:

我有以下代码:

public boolean updateDatabase(long houseValue, List<Users> userList)
{
    boolean result = false;
    Connection conn = null;
    PreparedStatement stmtUpdateUsers = null;
    PreparedStatement stmtQueryHouse = null;
    PreparedStatement  stmtUpdateHouse = null;
    ResultSet rs = null;

    String updateUsers = "UPDATE users SET money = ? WHERE username = ?";
    String queryHouse = "SELECT * FROM house WHERE house_id = ?";
    String updateHouse = "UPDATE house SET house_money = ? WHERE house_id = ?";

    try
    {
        conn = getConnectionPool().getConnection();
        conn.setAutoCommit(false);      

        stmtUpdateUsers = conn.prepareStatement(updateUsers);

        ...
        // Here is some code that updates Users table in a short loop
        ...

        stmtQueryHouse = conn.prepareStatement(queryHouse);
        stmtQueryHouse.setInt(1, 1); 
        rs = stmtQueryHouse.executeQuery();
        if(rs.next())
        {
            long houseMoney = rs.getLong("house_money");
            houseMoney += houseValue;

            stmtUpdateHouse = conn.prepareStatement(updateHouse);
            stmtUpdateHouse.setLong(1, houseMoney);
            stmtUpdateHouse.setInt(2, 1); 
            stmtUpdateHouse.executeUpdate();
        }
        else
        {               
            throw new SQLException("Failed to update house: unable to query house table");
        }

        conn.commit();
        result = true;
    }
    catch(SQLException e)
    {           
        logger.warn(getStackTrace(e));
        try{conn.rollback();}catch(SQLException excep)
        {
            logger.warn(getStackTrace(excep));
        }
    }
    finally
    {   
        DbUtils.closeQuietly(rs);
        DbUtils.closeQuietly(stmtQueryHouse);
        DbUtils.closeQuietly(stmtUpdateUsers);
        DbUtils.closeQuietly(stmtUpdateHouse);
        try { conn.setAutoCommit(true); } catch (SQLException e) { /* quiet */ }
        DbUtils.closeQuietly(conn);         
    }

    return result       
}
public boole



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: