public void updatePlayerDB(SFSExtension extension)
	{
		int dbId = this.getDBID();		
		IDBManager dbManager = extension.getParentZone().getDBManager();
		Connection connection;
        try
        {
        	// Grab a connection from the DBManager connection pool
	        connection = dbManager.getConnection();
	        
	        PreparedStatement stmt = connection.prepareStatement(
	        			"UPDATE player_data SET Configuration = ?, " +
	        			"Level = ?, EXP = ?, Skill = ?, " +
	        			"PositionX = ?, PositionY = ?, PositionZ = ?, " +
	        			"RotationX = ?, RotationY = ?, RotationZ = ? " +
	        			"WHERE ID = ?"
	        		);
	        stmt.setString(1, this.getConfig());
	        stmt.setInt(2, this.getLevel());
	        stmt.setLong(3, this.getEXP());
	        stmt.setInt(4, this.getSkill().ordinal());
	        try {
		        float[] pos = this.transform.getPosition();
		        stmt.setFloat(5, pos[0]);
		        stmt.setFloat(6, pos[1]);
		        stmt.setFloat(7, pos[2]);
	        } catch (ArrayIndexOutOfBoundsException aioobe) {
	        	extension.trace("Something is wrong here. Skipping position.");
	        }
	        try {
		        float[] rot = this.transform.getRotation();
		        stmt.setFloat(8, rot[0]);
		        stmt.setFloat(9, rot[1]);
		        stmt.setFloat(10, rot[2]);
	        } catch (ArrayIndexOutOfBoundsException aioobe) {
	        	extension.trace("Something is wrong here. Skipping rotation.");
	        }
	        stmt.setInt(11, dbId);
	        // Execute query
			stmt.execute();
			
			if (this.getNumBuilt() > 0)
			{
		        PreparedStatement stmt2 = connection.prepareStatement(
	        			"SELECT NumBuilt FROM clan_data WHERE ID = ?"
	        		);
		        stmt2.setInt(1, this.getClanID());
		        ResultSet res = stmt2.executeQuery();
		        
		        if (res.first())
		        {
		        	int newNum = res.getInt("NumBuilt") + this.getNumBuilt();
			        PreparedStatement stmt3 = connection.prepareStatement(
			        			"UPDATE clan_data SET NumBuilt = ? WHERE ID = ?"
			        		);
			        stmt3.setInt(1, newNum);
			        stmt3.setInt(2, this.getClanID());
					stmt3.execute();
		        }
		        else
		        {
			        PreparedStatement stmt3 = connection.prepareStatement(
		        			"INSERT INTO clan_data (ID, NumBuilt) VALUES (?, ?)"
		        		);
			        stmt3.setInt(1, this.getClanID());
			        stmt3.setInt(2, this.getNumBuilt());
					stmt3.execute();
		        }
			}
			
			// Return connection to the DBManager connection pool
			connection.close();
        }
        catch (SQLException e)
        {
        	SFSErrorData errData = new SFSErrorData(SFSErrorCode.GENERIC_ERROR);
        	errData.addParameter("SQL Error: " + e.getMessage());
        	extension.trace("A SQL Error occurred: " + e.getMessage());
        }		
	}