public void prepare()

in dekaf-jdbc/src/impl/JdbcMatrixCursor.java [62:89]


    public void prepare(final @NotNull Class<?> @NotNull [] cellClasses) {
        if (getters != null) throw new DBFetchingException("Cursor has been already prepared", seance.statementText);
        else if (isClosed()) throw new DBFetchingException("Cursor is closed", seance.statementText);

        int n = cellClasses.length;
        try {
            final ResultSetMetaData md = rset.getMetaData();
            final int               cc = md.getColumnCount();
            if (cc < n) {
                String msg = "Too few columns in the result set: expected " + n + " but actual " + cc;
                throw new DBFetchingException(msg, seance.statementText);
            }

            //noinspection unchecked
            getters = createArray(JdbcValueGetter.class, n);
            for (int i = 0; i < n; i++) {
                int jdbcType = md.getColumnType(i + 1);
                Class<? extends B> cellClass = (Class<? extends B>) cellClasses[i];
                JdbcValueGetter<? extends B> getter = JdbcValueGetters.of(jdbcType, cellClass);
                getters[i] = getter;
            }
        }
        catch (SQLException e) {
            throw new DBFetchingException("Failed to prepare cursor: "+e.getMessage(), e, seance.statementText);
        }

        columnCount = n;
    }