public Object getProperty(String key) {
        PreparedStatement pstmtGetProp = null;
        Object result = null;
        // build the query
        StringBuffer query =
                new StringBuffer("SELECT ").append(valueColumn).append(" FROM ");
        query.append(table).append(" WHERE ");
        query.append(keyColumn).append("=?");

        try {
            pstmtGetProp = con.prepareStatement(query.toString());
        } catch (SQLException e) {
            throw new RuntimeException("Not prepareStatement", e);
        }

        List results = new ArrayList();
        try {
            pstmtGetProp.setString(1, key);
            ResultSet rs = pstmtGetProp.executeQuery();

            while (rs.next()) {
                Object value = rs.getObject(valueColumn);

                if (isDelimiterParsingDisabled()) {
                    results.add(value);
                } else {
                    Iterator it =
                            PropertyConverter.toIterator(value, getListDelimiter());
                    while (it.hasNext()) {
                        results.add(it.next());
                    }
                }
            }
            pstmtGetProp.close();
        } catch (SQLException e) {
            throw new RuntimeException("Execute prepareStatement", e);
        }


        if (!results.isEmpty()) {
            result = (results.size() > 1) ? results : results.get(0);
        }
        return result;
    }