PDA

Visualizza la versione completa : [JAVA][JasperReports] net.sf.jasperreports.engine.JRException: Error executing SQL...


perseoclub
12-02-2012, 18:09
http://img703.imageshack.us/img703/3739/jreporterror.png

Prima di postare vi dico che le ho provate tutte... Ho trovato anche un thread su questo forum proprio simile a questo, ma non sono riuscito comunque a risolvere il problema.

Googlando sull'errore ho trovato che pare possa dipendere da come ho stabilito la connessione... Ma ho provato diverse volte a ricreare il file .jrxml attraverso la connessione wizard e non capisco dove posso sbagliare. Anzi, nell'anteprima di iReport il report viene compilato egregiamente...

Nello screenshot che vi ho postato ci sono le librerie JasperReports del progetto, il codice della classe test e l'errore in fase di runtime, che è questo:


...net.sf.jasperreports.engine.JRException: Error executing SQL statement for : null


Qualche suggerimento?

perseoclub
12-02-2012, 18:47
[edit] Volevo aggiungere che se visualizzo l'anteprima del report da iReport lo vedo benissimo...

È dalla classe .java che non riesco a produrre il PDF.

perseoclub
12-02-2012, 20:14
Che rinco... non avevo scritto correttamente l'URL del Database...

Corretto quell'errore però ne viene fuori uno dovuto ad una presunta operazione di casting:


Exception in thread "main" java.lang.ClassCastException: net.sf.jasperreports.engine.JasperReport cannot be cast to net.sf.jasperreports.engine.JasperPrint
at net.sf.jasperreports.engine.JasperExportManager.ex portReportToPdfFile(JasperExportManager.java:97)
at jtablerowcolortest.MyReportViewer.main(MyReportVie wer.java:41)

:confused:

perseoclub
12-02-2012, 21:08
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException; import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;

public class MyReportViewer {

public static String JASPER_REPORT_FOLDER = "/home/fabio/myJava/JTableRowColorTest/src/jtablerowcolortest/";
public static String JASPER_FILENAME = "report1";
public static String DRIVER = "com.mysql.jdbc.Driver";
public static String DB_URL = "jdbc:mysql://localhost:3306/javatest";
public static String DB_NAME = "javatest";
public static String DB_USERNAME = "xxxxx";
public static String DB_PASSWORD = "xxxxx";

public MyReportViewer() throws JRException, ClassNotFoundException, SQLException {

//caricamento file JRXML
JasperDesign jasperDesign = JRXmlLoader.load(JASPER_REPORT_FOLDER + JASPER_FILENAME + ".jrxml");
//compilazione del file e generazione del file JASPER
JasperCompileManager.compileReportToFile(jasperDes ign, JASPER_REPORT_FOLDER + JASPER_FILENAME + ".jasper");

//inizializzazione connessione al database
Class.forName(DRIVER);
Connection conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);

Map param = new HashMap();

//rendering e generazione del file PDF
JasperPrint jp = JasperFillManager.fillReport(JASPER_REPORT_FOLDER + JASPER_FILENAME + ".jasper", param, conn);

// Con questa linea ia creazione del PDF mi andava sempre in errore...
//JasperExportManager.exportReportToPdfFile(JASPER_R EPORT_FOLDER + JASPER_FILENAME + ".jasper", JASPER_REPORT_FOLDER + "report1.pdf");

//...così l'ho sostituita con questa che mi fa vedere l'anteprima...
JasperViewer viewer = new JasperViewer(jp, true);

viewer.setVisible(true);

}
}


Poi nel codice richiamo la mia classe MyReportViewer per vedere l'anteprima... :messner:


try {
MyReportViewer my_rep = new MyReportViewer();

} catch (JRException ex) {Logger.getLogger(JTableRowColorTest.class.getName ()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {Logger.getLogger(JTableRowColorTest.class.getName ()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {Logger.getLogger(JTableRowColorTest.class.getName ()).log(Level.SEVERE, null, ex);
}


Domanda:

- Perché quando chiudo la finestra dell'Anteprima-Viewer mi si chiude l'applicazione completa?

- C'è un modo comunque per creare direttamente il file .pdf?

Loading