JavaFX দিয়ে ডাটাবেস থেকে ডেটা ফেচ করা এবং UI তে প্রদর্শন করা একটি সাধারণ কাজ, যা অনেক অ্যাপ্লিকেশনে প্রয়োজন হয়। আমরা JDBC (Java Database Connectivity) ব্যবহার করে ডেটাবেসের সাথে সংযোগ স্থাপন করি এবং তারপর JavaFX UI উপাদান (যেমন TableView, ListView, বা TextField) এ ডেটা প্রদর্শন করি।
ডাটাবেস থেকে ডেটা ফেচ করার জন্য ধাপগুলি:
- ডাটাবেস সংযোগ স্থাপন (JDBC ব্যবহার করে)
- ডেটা ফেচ করা (SQL কুয়েরি ব্যবহার করে)
- ডেটা UI তে প্রদর্শন করা (JavaFX Controls যেমন
TableView,ListView, ইত্যাদি ব্যবহার করে)
প্রসেসের বিস্তারিত উদাহরণ:
আমরা একটি সাধারণ MySQL ডাটাবেস থেকে ডেটা ফেচ করে একটি TableView তে প্রদর্শন করার উদাহরণ দেখব।
Step 1: JDBC ড্রাইভার যোগ করা
প্রথমে, আপনি আপনার প্রজেক্টে JDBC ড্রাইভার যোগ করতে হবে। যদি আপনি Maven ব্যবহার করেন, তাহলে আপনাকে MySQL JDBC ড্রাইভার ডিপেনডেন্সি পম.এক্সএমএল ফাইলে যোগ করতে হবে।
Maven Dependency:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version> <!-- Use the latest version -->
</dependency>
Step 2: ডাটাবেসে সংযোগ স্থাপন
এখানে একটি MySQL ডাটাবেস থেকে ডেটা ফেচ করার জন্য JDBC ব্যবহার করা হচ্ছে। আমরা একটি সিম্পল টেবিল students ব্যবহার করব, যা কিছু শিক্ষার্থীর তথ্য ধারণ করবে।
MySQL Database Example:
CREATE DATABASE school;
USE school;
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
age INT
);
INSERT INTO students (name, age) VALUES ('John Doe', 20), ('Jane Smith', 22), ('Sam Brown', 23);
Step 3: JavaFX UI এবং ডাটাবেস থেকে ডেটা ফেচ করা
এখন আমরা একটি JavaFX অ্যাপ্লিকেশন তৈরি করব যা ডাটাবেস থেকে ডেটা ফেচ করবে এবং TableView তে তা প্রদর্শন করবে।
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DatabaseExample extends Application {
// TableView এবং Column তৈরি করা
private TableView<Student> table = new TableView<>();
private final ObservableList<Student> data = FXCollections.observableArrayList();
@Override
public void start(Stage stage) {
// Column তৈরি
TableColumn<Student, String> nameColumn = new TableColumn<>("Name");
nameColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());
TableColumn<Student, Integer> ageColumn = new TableColumn<>("Age");
ageColumn.setCellValueFactory(cellData -> cellData.getValue().ageProperty().asObject());
// TableView এ কলাম যোগ করা
table.getColumns().addAll(nameColumn, ageColumn);
// ডেটা লোড করা
loadDataFromDatabase();
// TableView UI-তে যোগ করা
StackPane root = new StackPane();
root.getChildren().add(table);
// Scene তৈরি এবং Stage সেট করা
Scene scene = new Scene(root, 300, 250);
stage.setTitle("Database Data in JavaFX");
stage.setScene(scene);
stage.show();
}
private void loadDataFromDatabase() {
// ডাটাবেস থেকে ডেটা ফেচ করা
String url = "jdbc:mysql://localhost:3306/school";
String user = "root";
String password = "password"; // আপনার ডাটাবেস পাসওয়ার্ড দিন
try (Connection connection = DriverManager.getConnection(url, user, password);
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM students")) {
// ডেটাবেস থেকে ডেটা ফেচ এবং ObservableList-এ যোগ করা
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
data.add(new Student(name, age));
}
} catch (Exception e) {
e.printStackTrace();
}
// TableView এ ডেটা যোগ করা
table.setItems(data);
}
public static void main(String[] args) {
launch(args);
}
// Student ক্লাস (Model)
public static class Student {
private final javafx.beans.property.SimpleStringProperty name;
private final javafx.beans.property.SimpleIntegerProperty age;
public Student(String name, int age) {
this.name = new javafx.beans.property.SimpleStringProperty(name);
this.age = new javafx.beans.property.SimpleIntegerProperty(age);
}
public String getName() {
return name.get();
}
public javafx.beans.property.SimpleStringProperty nameProperty() {
return name;
}
public int getAge() {
return age.get();
}
public javafx.beans.property.SimpleIntegerProperty ageProperty() {
return age;
}
}
}
এখানে কী হচ্ছে?
Studentক্লাস:- এটি একটি সিম্পল মডেল ক্লাস যা
nameএবংageফিল্ড ধারণ করে।SimpleStringPropertyএবংSimpleIntegerPropertyব্যবহার করে, JavaFX এর প্রপার্টি মেকানিজম সক্রিয় করা হয়েছে, যা UI এ ডেটার পরিবর্তন স্বয়ংক্রিয়ভাবে রিফ্রেশ করতে সাহায্য করবে।
- এটি একটি সিম্পল মডেল ক্লাস যা
loadDataFromDatabase()মেথড:- এখানে
JDBCব্যবহার করে MySQL ডাটাবেসে সংযোগ করা হয়েছে এবংSELECT * FROM studentsকুয়েরি ব্যবহার করে ডেটা ফেচ করা হচ্ছে। - ফেচ করা ডেটা
ObservableListএ যোগ করা হচ্ছে, যা পরবর্তীতেTableViewতে প্রদর্শিত হবে।
- এখানে
- JavaFX UI:
- একটি
TableViewতৈরি করা হয়েছে যাতেnameএবংageকলাম থাকবে।ObservableListডেটা থেকে কলামগুলো পূর্ণ হবে।
- একটি
TableColumn:TableColumnতৈরি করা হয়েছে এবং প্রত্যেকটি কলামেcellValueFactoryব্যবহার করে ডেটার জন্য প্রপার্টি দেওয়া হয়েছে।
কিছু গুরুত্বপূর্ণ ব্যাপার:
ObservableList: এটি একটিListযা JavaFX UI কন্ট্রোলের সাথে ইন্টারঅ্যাক্ট করতে সক্ষম। আপনি যখন এই লিস্টে ডেটা যোগ করেন, তখন UI তে তা স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায়।- JDBC Exception Handling: ডাটাবেসে সংযোগ এবং কুয়েরি পাঠানোর সময় এক্সসেপশন হ্যান্ডলিং জরুরি। এটি ডাটাবেসের সাথে সঠিকভাবে কাজ নিশ্চিত করতে সাহায্য করে।
সারাংশ:
- JDBC ব্যবহার করে ডাটাবেস থেকে ডেটা ফেচ করার এবং JavaFX UI তে তা প্রদর্শন করার জন্য আপনি
TableView,TextField,ComboBoxইত্যাদি কন্ট্রোল ব্যবহার করতে পারেন। - ObservableList এবং TableView JavaFX এর ক্ষমতা রয়েছে যা ডেটা প্রদর্শন এবং লাইভ আপডেটের জন্য ব্যবহৃত হয়।
- Database Connectivity JavaFX অ্যাপ্লিকেশনকে ডেটাবেসের সাথে সংযুক্ত করে এবং ডেটাকে UI তে প্রদর্শন করতে সক্ষম করে।
Read more