JasperReports হল একটি শক্তিশালী ওপেন সোর্স রিপোর্টিং টুল যা Java অ্যাপ্লিকেশন থেকে রিপোর্ট তৈরি করতে ব্যবহৃত হয়। JDBC DataSource ব্যবহার করে রিপোর্ট তৈরি করার সময়, আপনি ডেটাবেস থেকে তথ্য আনার জন্য SQL Queries অথবা Stored Procedures ব্যবহার করতে পারেন। এই টুলটি খুবই কার্যকরী যখন আপনাকে ডেটাবেসে সংরক্ষিত তথ্য ভিত্তিক রিপোর্ট তৈরি করতে হয়।
SQL Queries এবং Stored Procedures ব্যবহার করে JasperReports এ রিপোর্ট তৈরি করা
১. JDBC DataSource ব্যবহার করে রিপোর্ট তৈরি করা
JasperReports ডেটাবেস থেকে রিপোর্ট তৈরি করতে JDBC DataSource ব্যবহার করে ডেটা বের করার জন্য SQL Queries ব্যবহার করতে পারে। ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য JDBC ড্রাইভার এবং ডেটাবেস ক্রেডেনশিয়ালস প্রয়োজন হয়। একটি সাধারণ JDBC DataSource দিয়ে JasperReports এর রিপোর্ট তৈরি করা যায়।
JDBC DataSource কনফিগারেশন:
প্রথমে আপনাকে JDBC ড্রাইভার এবং ডেটাবেস কনফিগারেশন করতে হবে। যদি আপনি MySQL ব্যবহার করেন, তবে আপনি JDBC URL, username, এবং password ব্যবহার করে ডেটাবেসে সংযোগ করতে পারেন।
import javax.sql.DataSource;
import com.mysql.cj.jdbc.MysqlDataSource;
public class DataSourceConfig {
public static DataSource getDataSource() {
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setURL("jdbc:mysql://localhost:3306/your_database");
dataSource.setUser("username");
dataSource.setPassword("password");
return dataSource;
}
}
এখন, আপনি JasperReports এ DataSource হিসেবে এই কনফিগারেশন ব্যবহার করতে পারবেন।
২. SQL Query ব্যবহার করে রিপোর্ট তৈরি করা
JasperReports এ রিপোর্ট তৈরি করার জন্য সাধারণত JRXML ফাইল তৈরি করা হয়, যেখানে আপনি ডেটাবেসের তথ্য SQL Query এর মাধ্যমে সংগ্রহ করেন।
JRXML ফাইলের মধ্যে SQL Query লেখা হয় যা ডেটাবেস থেকে তথ্য সংগ্রহ করে এবং সেই ডেটা রিপোর্টে প্রদর্শিত হয়।
SQL Query Example:
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="SalesReport" language="java" pageWidth="595" pageHeight="842">
<queryString>
<![CDATA[SELECT id, product_name, price, quantity FROM sales]]>
</queryString>
<field name="id" class="java.lang.Integer"/>
<field name="product_name" class="java.lang.String"/>
<field name="price" class="java.lang.Double"/>
<field name="quantity" class="java.lang.Integer"/>
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="0" width="200" height="20"/>
<textFieldExpression><![CDATA[$F{product_name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="300" y="0" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{price}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="400" y="0" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{quantity}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
এখানে, <queryString> ট্যাগে SQL কুয়েরি ব্যবহার করা হয়েছে যা sales টেবিল থেকে পণ্য আইডি, নাম, মূল্য এবং পরিমাণের তথ্য নিয়ে আসবে। এই ডেটা $F{field_name} ব্যবহার করে রিপোর্টের বিভিন্ন ফিল্ডে প্রদর্শিত হবে।
Java Code Example (JDBC DataSource দিয়ে রিপোর্ট ফিল করা):
import net.sf.jasperreports.engine.*;
import javax.sql.DataSource;
import java.util.HashMap;
import java.sql.Connection;
public class JasperReportsJDBCExample {
public static void main(String[] args) throws JRException {
// JDBC DataSource কনফিগারেশন
DataSource dataSource = DataSourceConfig.getDataSource();
// ডেটাবেস সংযোগ
try (Connection connection = dataSource.getConnection()) {
// JRXML ফাইল থেকে রিপোর্ট তৈরি
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/your/report.jrxml");
// রিপোর্টে প্যারামিটার পাঠানো
HashMap<String, Object> parameters = new HashMap<>();
parameters.put("ReportTitle", "Sales Report");
// রিপোর্ট ফিলিং
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
// রিপোর্ট পিডিএফ আউটপুট
JasperExportManager.exportReportToPdfFile(jasperPrint, "sales_report.pdf");
} catch (Exception e) {
e.printStackTrace();
}
}
}
এই কোডের মাধ্যমে:
- JDBC Connection ব্যবহৃত হয়েছে রিপোর্টের জন্য।
- JasperCompileManager দিয়ে JRXML ফাইল কম্পাইল করা হয়েছে।
- JasperFillManager দিয়ে ডেটাবেস থেকে ডেটা নিয়ে রিপোর্ট ফিল করা হয়েছে।
- JasperExportManager দিয়ে রিপোর্ট PDF ফরম্যাটে এক্সপোর্ট করা হয়েছে।
৩. Stored Procedures ব্যবহার করে রিপোর্ট তৈরি করা
Stored Procedures হল ডেটাবেসে সংরক্ষিত SQL কোড যা একটি নির্দিষ্ট কাজ সম্পাদন করে, যেমন ডেটা প্রসেস করা বা কিছু গণনা করা। JasperReports এ Stored Procedures ব্যবহার করে রিপোর্ট তৈরি করা সম্ভব। এই ক্ষেত্রে, আপনি Stored Procedure এর আউটপুট হিসেবে ডেটা পান এবং তা রিপোর্টে প্রদর্শন করেন।
Stored Procedure Example:
ধরা যাক, আপনার ডেটাবেসে একটি Stored Procedure রয়েছে যেটি sales_summary নামে পরিচিত এবং এটি সমস্ত পণ্যের মোট বিক্রয় প্রাপ্ত তথ্য প্রদান করে।
CREATE PROCEDURE getSalesSummary()
BEGIN
SELECT product_name, SUM(quantity * price) AS total_sales
FROM sales
GROUP BY product_name;
END;
JRXML ফাইলের মাধ্যমে Stored Procedure কল করা:
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="SalesSummaryReport" language="java" pageWidth="595" pageHeight="842">
<queryString>
<![CDATA[{call getSalesSummary()}]]>
</queryString>
<field name="product_name" class="java.lang.String"/>
<field name="total_sales" class="java.lang.Double"/>
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="300" height="20"/>
<textFieldExpression><![CDATA[$F{product_name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="300" y="0" width="200" height="20"/>
<textFieldExpression><![CDATA[$F{total_sales}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
Java Code Example (Stored Procedure ব্যবহার করা):
import net.sf.jasperreports.engine.*;
import javax.sql.DataSource;
import java.util.HashMap;
import java.sql.Connection;
import java.sql.CallableStatement;
public class JasperReportsStoredProcedureExample {
public static void main(String[] args) throws JRException {
// JDBC DataSource কনফিগারেশন
DataSource dataSource = DataSourceConfig.getDataSource();
// ডেটাবেস সংযোগ
try (Connection connection = dataSource.getConnection()) {
// Stored Procedure কল করা
CallableStatement statement = connection.prepareCall("{call getSalesSummary()}");
statement.execute();
// JRXML ফাইল থেকে রিপোর্ট তৈরি
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/your/report.jrxml");
// রিপোর্ট ফিলিং
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap<>(), connection);
// রিপোর্ট পিডিএফ আউটপুট
JasperExportManager.exportReportToPdfFile(jasperPrint, "sales_summary_report.pdf");
} catch (Exception e) {
e.printStackTrace();
}
}
}
- SQL Queries এবং Stored Procedures ব্যবহার করে JasperReports এর মাধ্যমে ডেটাবেস থেকে ডেটা নিয়ে রিপোর্ট তৈরি করা যায়।
- SQL Query ব্যবহার করে সরাসরি ডেটাবেস থেকে ডেটা সংগ্রহ করা হয়, এবং Stored Procedure ব্যবহার করে আপনি পূর্বনির্ধারিত SQL প্রক্রিয়া থেকে আউটপুট পেতে পারেন।
- JDBC DataSource ব্যবহার করে আপনি JasperReports এর রিপোর্ট ফিলিং করতে পারেন, যেখানে JasperFillManager এবং JasperExportManager দিয়ে রিপোর্ট এক্সপোর্ট করা হয়।
এইভাবে আপনি JasperReports-এর সাহায্যে ডেটাবেস থেকে SQL Queries অথবা Stored Procedures ব্যবহার করে রিপোর্ট তৈরি, কাস্টমাইজ এবং এক্সপোর্ট করতে পারেন।
Read more