JavaFX TableView এর মাধ্যমে Database এর ডেটা data binding করার মাধ্যমে আপনি আপনার JavaFX অ্যাপ্লিকেশনে ডেটাবেসের ডেটা খুব সহজভাবে প্রদর্শন করতে পারেন। TableView একটি শক্তিশালী কন্ট্রোল যা সারণী আকারে ডেটা প্রদর্শন করার জন্য ব্যবহৃত হয় এবং data binding এর মাধ্যমে আপনি ডেটাবেসের ডেটা সরাসরি TableView-এ প্রদর্শন করতে পারেন।
এখানে, আমরা JDBC (Java Database Connectivity) ব্যবহার করে ডেটাবেস থেকে ডেটা নিয়ে, সেই ডেটাকে TableView এ প্রদর্শন করব।
ধাপ ১: প্রয়োজনীয় লাইব্রেরি
- JDBC লাইব্রেরি আপনার প্রকল্পে যুক্ত করা থাকতে হবে। আপনি যদি MySQL ব্যবহার করেন, তবে MySQL JDBC ড্রাইভার ইনস্টল করতে হবে। (যেমন
mysql-connector-javaজার ফাইল)
ধাপ ২: ডেটাবেস তৈরি এবং ডেটা সন্নিবেশ
আমরা একটি সাধারণ MySQL ডেটাবেস তৈরি করব এবং সেখানে কিছু ডেটা সন্নিবেশ করব।
CREATE DATABASE mydb;
USE mydb;
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
age INT,
department VARCHAR(100)
);
INSERT INTO employees (name, age, department) VALUES
('John Doe', 30, 'Engineering'),
('Jane Smith', 25, 'Marketing'),
('Emily Johnson', 35, 'HR');
ধাপ ৩: JavaFX TableView Data Binding Example
এখন, JavaFX অ্যাপ্লিকেশনে TableView ব্যবহার করে ডেটাবেসের ডেটা প্রদর্শন করব।
JavaFX TableView Data Binding Example:
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.control.cell.PropertyValueFactory;
import javafx.stage.Stage;
import java.sql.*;
public class TableViewDatabaseBindingExample extends Application {
// Employee class to represent data from the database
public static class Employee {
private final int id;
private final String name;
private final int age;
private final String department;
public Employee(int id, String name, int age, String department) {
this.id = id;
this.name = name;
this.age = age;
this.department = department;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getDepartment() {
return department;
}
}
@Override
public void start(Stage primaryStage) {
// Create TableView and define columns
TableView<Employee> tableView = new TableView<>();
TableColumn<Employee, Integer> idColumn = new TableColumn<>("ID");
idColumn.setCellValueFactory(new PropertyValueFactory<>("id"));
TableColumn<Employee, String> nameColumn = new TableColumn<>("Name");
nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
TableColumn<Employee, Integer> ageColumn = new TableColumn<>("Age");
ageColumn.setCellValueFactory(new PropertyValueFactory<>("age"));
TableColumn<Employee, String> departmentColumn = new TableColumn<>("Department");
departmentColumn.setCellValueFactory(new PropertyValueFactory<>("department"));
tableView.getColumns().addAll(idColumn, nameColumn, ageColumn, departmentColumn);
// ObservableList to hold data for TableView
ObservableList<Employee> employees = FXCollections.observableArrayList();
// JDBC connection and fetch data from the database
try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password")) {
String query = "SELECT * FROM employees";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
String department = resultSet.getString("department");
// Add employee data to the ObservableList
employees.add(new Employee(id, name, age, department));
}
} catch (SQLException e) {
e.printStackTrace();
}
// Set data to the TableView
tableView.setItems(employees);
// Create Scene and Stage
Scene scene = new Scene(tableView, 600, 400);
primaryStage.setTitle("Database TableView Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- Employee Class: একটি
Employeeক্লাস তৈরি করা হয়েছে যা ডেটাবেসের ডেটার প্রপার্টি ধারণ করে, যেমনid,name,age, এবংdepartment। - TableView এবং TableColumn:
TableViewএবং তার কলাম তৈরি করা হয়েছে, যেখানে প্রতিটি কলাম একটি নির্দিষ্ট প্রপার্টির জন্য ডেটা শো করবে। - JDBC Connection:
ConnectionএবংStatementব্যবহার করে ডেটাবেসের ডেটা পড়া হয়েছে। - ObservableList:
ObservableListব্যবহার করা হয়েছে যাতে ডেটা পরিবর্তিত হলে তাTableView-এ অটোমেটিক্যালি আপডেট হয়। - PropertyValueFactory:
PropertyValueFactoryক্লাস ব্যবহার করে টেবিল কলামগুলির সাথে ক্লাস প্রপার্টির মান মেলানো হয়েছে।
ডেটাবেস থেকে ডেটা লোড করার বিস্তারিত:
- ডেটাবেসের সাথে সংযোগ স্থাপন করার জন্য
DriverManager.getConnection()ব্যবহার করা হয়েছে, যেখানে ডেটাবেস URL, ইউজার এবং পাসওয়ার্ড দেয়া হয়। SELECT * FROM employeesকুয়েরি ব্যবহার করে ডেটাবেস থেকে সমস্ত কর্মচারীর তথ্য সংগ্রহ করা হয়েছে।ResultSetথেকে প্রতিটি কর্মচারীর ডেটা পড়েEmployeeঅবজেক্ট তৈরি করা হয়েছে এবং সেই অবজেক্টগুলিObservableList-এ যুক্ত করা হয়েছে।
এটা কীভাবে কাজ করে?:
- JavaFX
TableViewডেটা বিন্যাসের জন্যObservableListব্যবহার করে, যেখানে ডেটা পরিবর্তন হলে তা তৎক্ষণাতTableView-এ প্রদর্শিত হয়। - ডেটাবেস থেকে ডেটা সংগ্রহ করে, তা JavaFX
TableView-এ প্রদর্শন করা হয় এবং ইউজার তা দেখতে পারে।
সারাংশ:
- JavaFX TableView ব্যবহার করে আপনি ডেটাবেসের ডেটা সহজে ডিসপ্লে করতে পারেন। Data Binding এর মাধ্যমে
ObservableListব্যবহার করে ডেটাবেসের ডেটাTableViewএর সাথে সংযুক্ত করা হয়, এবং যে কোন পরিবর্তনTableView-এ রিয়েল-টাইমে আপডেট হয়ে থাকে। - JDBC ব্যবহার করে ডেটাবেস থেকে ডেটা লোড করা হয় এবং সেই ডেটা
TableViewএর মাধ্যমে প্রদর্শিত হয়।
Read more