[英]How to search for only one particular record in MySQL table using Java
[英]How to view only one record from a table using JasperReports?
我現在正在開展一個診所項目,我需要打印項目的特殊報告,例如特定患者的私人信息。
所以我為我的項目工作了數據庫,並在數據庫和JDeveloper之間建立了連接。 我設計的報告由JasperReport 5程序打印,我在Jasperreport 5和JDeveloper程序之間建立了連接。 現在我想通過Patient_Id
為特定患者打印報告。 最后,我需要從我的數據庫中的表中的一條記錄打印報告,而不是數據庫中表中的所有記錄。
這是連接JasperReport和JDeveloper的代碼:
Connection con;
InputStream input=null;
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
con = DriverManager.getConnection(url, "hr", "hr");
input=new FileInputStream(new File("report.jrxml"));
JasperDesign jasperDesign;
jasperDesign=JRXmlLoader.load(input);
JasperReport jasperReport;
jasperReport=JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint;
jasperPrint=JasperFillManager.fillReport(jasperReport,null,con);
JRViewer v=new JRViewer(jasperPrint);
v.setVisible(true);
JFrame fr2=new JFrame();
fr2.setSize(200, 200);
fr2.add(v);
fr2.setVisible(true);
input.close();
con.close();
從提供的代碼外觀中,您嵌入了查詢以在報告中獲取患者信息。 哪個好。 現在,您需要微調該查詢以獲得單個結果。 因此,基本上您需要將一個參數傳遞給報告,以便為其提供患者ID,然后按此過濾結果。 由於您已經在使用sql,因此直接在sql中進行過濾(這是數據庫擅長的,所以讓它這樣做)。
以下是您需要遵循的步驟:
PATIENT_ID
的新參數,其類型為Integer
(或者可能更合適,具體取決於數據庫中患者ID的字段類型)。 WHERE
子句(或使用和AND
附加到現有WHERE
子句)以下(假設患者ID位於名為Patient_id
的列中): Patient_id = $P!{PATIENT_ID}
現在,您需要在java代碼中傳入患者ID。 所以創建一個Map
並將其添加到它中,如下所示:
Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("PATIENT_ID", <the patient id value here>);
然后你需要將它傳遞給你對fillReport
方法的調用,所以把它改成看起來像:
jasperPrint=JasperFillManager.fillReport(jasperReport,parameters,con);
就打印而言, JRViewer
已經內置了打印功能。 因此用戶只需單擊打印按鈕即可。
您應該在Map中指定您作為fillReport的第二個參數傳遞的條件,例如:
Map<String, Serializable> conditions = new HashMap<String, Serializable>();
conditions.put("PATIENT_ID", 1);
JasperPrint jasperPrint = JasperfillManager.fillReport(jasperReport, conditions, con);
希望有所幫助,讓我知道你是如何得到的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.