public BirthdayStats getBirthdayStats() throws SQLException {
		if (!dbcon.IsConnected) { return null; }

		BirthdayStats stats = new BirthdayStats();
		ResultSet res;

		String year = new SimpleDateFormat("YYYY").format(new Date());
		String month = new SimpleDateFormat("MM").format(new Date());

		// Total birthday records
		res = dbcon.ExecuteQuery("SELECT COUNT(*) FROM birthdaygift");
		if ((res != null) && (res.next())) {
			stats.TotalBirthdays = res.getInt(1);
		}

		// Total birthdays this month
		res = dbcon.ExecuteQuery("SELECT COUNT(*) FROM birthdaygift WHERE strftime('%m', BirthdayDate) = '" + month + "'");
		if ((res != null) && (res.next())) {
			stats.MonthBirthdays = res.getInt(1);
		}
		
		// Total claimed gifts this year
		res = dbcon.ExecuteQuery("SELECT COUNT(*) FROM birthdaygift WHERE strftime('%Y', lastGiftDate) = '" + year + "'");
		if ((res != null) && (res.next())) {
			stats.ClaimedGiftsThisYear = res.getInt(1);
		}
		
		// Total unclaimed gifts this year
		res = dbcon.ExecuteQuery("SELECT COUNT(*) FROM birthdaygift WHERE strftime('%Y', lastAnnouncedDate) = '" + year + "' AND strftime('%Y', lastGiftDate) IS NOT '" + year + "'");
		if ((res != null) && (res.next())) {
			stats.UnclaimedGiftsThisYear = res.getInt(1);
		}
		
		return stats;
	}