Вставить запрос в отчетах яшмы - PullRequest
1 голос
/ 10 октября 2011

Возможно ли выполнить запрос вставки в отчетах IReports / jasper во время создания отчета?

Ответы [ 2 ]

0 голосов
/ 08 апреля 2016

Да, вы можете.Вы можете выполнить запрос, когда хотите отобразить отчет.Вот пример, который работает для меня.

    try {
        Map parameters = new HashMap();
        connectionString ="jdbc:mysql://localhost/myDb", "myUsername", "myPassword"
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection(connectionString);
        PreparedStatement stmt = conn.prepareStatement(query);
        ResultSet rs = stmt.executeQuery();
        JRResultSetDataSource rsdt = new JRResultSetDataSource(rs);

        JasperPrint jp;
        jp = JasperFillManager.fillReport("sourceFileName.jasper", parameters, rsdt);
        JasperViewer jv = new JasperViewer(jp, false);
        jv.setVisible(true);

    } catch (ClassNotFoundException | SQLException | JRException ex) {
        ex.printStackTrace();
    }
0 голосов
/ 20 ноября 2011

Да, идея, которая вам нужна, это параметры, использующие этот синтаксис: $P!{PARAM_NAME}.

Таким образом, весь ваш SQL-запрос (или другой тип запроса) может быть просто $P!{SQL}. Затем вы передаете именно тот динамический SQL, который вам нужен.

UPDATE: Прочитав комментарий Шарада, я понял, что мой ответ выше не является хорошим. То, что я написал, правда ... но оно не отвечает на основной вопрос.

Нет, ваш отчет не может действительно выполнить оператор вставки. Строго говоря, я уверен, что это не невозможно. Вы можете добавить скриптлет или пользовательскую функцию в файл .jar, который устанавливает соединение и выполняет вставку. Но на самом деле ... отчет выполнит один или несколько запросов. Каркас JR не предназначен для выполнения вставок или обновлений.

...