JavaFX এবং JDBC (Java Database Connectivity) ব্যবহার করে আপনি JavaFX অ্যাপ্লিকেশন থেকে ডাটাবেসের সাথে সংযোগ স্থাপন এবং ডাটা অ্যাক্সেস করতে পারেন। JDBC একটি API যা Java অ্যাপ্লিকেশনগুলোকে রিলেশনাল ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করতে সহায়তা করে। JavaFX দিয়ে ইউজার ইন্টারফেস তৈরি করার পাশাপাশি, JDBC ব্যবহার করে ডাটাবেসের সাথে কাজ করা সম্ভব।
JavaFX এবং JDBC দিয়ে ডাটাবেস সংযোগ
JDBC এর মাধ্যমে ডাটাবেস সংযোগ করার জন্য সাধারণত কয়েকটি ধাপ অনুসরণ করতে হয়:
- JDBC ড্রাইভার লোড করা: ডাটাবেসের সাথে সংযোগ স্থাপনের জন্য ড্রাইভার ক্লাস লোড করা হয়।
- ডাটাবেস সংযোগ:
DriverManager.getConnection()ব্যবহার করে ডাটাবেসের সাথে সংযোগ স্থাপন করা হয়। - SQL স্টেটমেন্ট: ডাটাবেসে কুইরি বা কমান্ড পাঠানো হয়।
- ডাটাবেস থেকে ডাটা রিট্রিভ করা:
ResultSetএর মাধ্যমে ডাটাবেস থেকে ডাটা সংগ্রহ করা হয়। - ডাটাবেস সংযোগ বন্ধ করা: কাজ শেষে ডাটাবেস সংযোগ বন্ধ করা হয়।
JavaFX এবং JDBC এর মাধ্যমে ডাটাবেস সংযোগ উদাহরণ:
এই উদাহরণে আমরা একটি MySQL ডাটাবেসের সাথে সংযোগ স্থাপন এবং তিনটি কলাম সহ একটি সিম্পল টেবিল থেকে ডাটা প্রদর্শন করব।
ধাপ 1: MySQL ড্রাইভার ডিপেনডেন্সি (pom.xml for Maven):
প্রথমে, আপনার pom.xml (যদি আপনি Maven ব্যবহার করেন) ফাইলে MySQL JDBC ড্রাইভার ডিপেনডেন্সি যোগ করুন।
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version> <!-- Use the appropriate version -->
</dependency>
</dependencies>
ধাপ 2: ডাটাবেস সংযোগ স্থাপন এবং ডাটা রিট্রিভ করা
JavaFX অ্যাপ্লিকেশন থেকে JDBC ব্যবহার করে ডাটাবেসের সাথে সংযোগ এবং ডাটা রিট্রিভ করার জন্য একটি সিম্পল উদাহরণ:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import java.sql.*;
public class JavaFXJDBCExample extends Application {
private final String DB_URL = "jdbc:mysql://localhost:3306/mydatabase"; // ডাটাবেস URL
private final String USER = "root"; // ডাটাবেস ইউজার
private final String PASS = "password"; // ডাটাবেস পাসওয়ার্ড
private TableView<Person> tableView = new TableView<>(); // TableView ব্যবহার করে ডাটা প্রদর্শন
private ObservableList<Person> personList = FXCollections.observableArrayList();
@Override
public void start(Stage primaryStage) {
// ডাটাবেস থেকে ডাটা রিট্রিভ করা
retrieveDataFromDatabase();
// কলাম গুলি তৈরি করা
TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
nameColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());
TableColumn<Person, Integer> ageColumn = new TableColumn<>("Age");
ageColumn.setCellValueFactory(cellData -> cellData.getValue().ageProperty().asObject());
TableColumn<Person, String> cityColumn = new TableColumn<>("City");
cityColumn.setCellValueFactory(cellData -> cellData.getValue().cityProperty());
// টেবিলে কলাম যোগ করা
tableView.getColumns().addAll(nameColumn, ageColumn, cityColumn);
tableView.setItems(personList);
// StackPane তৈরি করা
StackPane root = new StackPane();
root.getChildren().add(tableView);
// Scene তৈরি এবং সেট করা
Scene scene = new Scene(root, 500, 400);
primaryStage.setTitle("JavaFX JDBC Example");
primaryStage.setScene(scene);
primaryStage.show();
}
// ডাটাবেস থেকে ডাটা রিট্রিভ করা
private void retrieveDataFromDatabase() {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// ডাটাবেস সংযোগ স্থাপন করা
conn = DriverManager.getConnection(DB_URL, USER, PASS);
stmt = conn.createStatement();
// SQL কুয়েরি চালানো
String sql = "SELECT name, age, city FROM people";
rs = stmt.executeQuery(sql);
// রেকর্ডগুলির ওপর লুপ করে ডাটা প্রক্রিয়া করা
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
String city = rs.getString("city");
// Person অবজেক্ট তৈরি করে ObservableList এ যোগ করা
personList.add(new Person(name, age, city));
}
} catch (SQLException e) {
showAlert("Database Error", "Error retrieving data from the database: " + e.getMessage(), AlertType.ERROR);
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
showAlert("Error", "Error closing resources: " + e.getMessage(), AlertType.ERROR);
}
}
}
// Error Message দেখানোর জন্য Helper Method
private void showAlert(String title, String message, AlertType alertType) {
Alert alert = new Alert(alertType);
alert.setTitle(title);
alert.setHeaderText(null);
alert.setContentText(message);
alert.showAndWait();
}
public static void main(String[] args) {
launch(args);
}
}
// Person class for TableView item representation
class Person {
private final javafx.beans.property.SimpleStringProperty name;
private final javafx.beans.property.SimpleIntegerProperty age;
private final javafx.beans.property.SimpleStringProperty city;
public Person(String name, int age, String city) {
this.name = new javafx.beans.property.SimpleStringProperty(name);
this.age = new javafx.beans.property.SimpleIntegerProperty(age);
this.city = new javafx.beans.property.SimpleStringProperty(city);
}
public javafx.beans.property.SimpleStringProperty nameProperty() {
return name;
}
public javafx.beans.property.SimpleIntegerProperty ageProperty() {
return age;
}
public javafx.beans.property.SimpleStringProperty cityProperty() {
return city;
}
}
এখানে কী হচ্ছে?
- JDBC ডাটাবেস সংযোগ:
DriverManager.getConnection()ব্যবহার করে MySQL ডাটাবেসের সাথে সংযোগ স্থাপন করা হয়েছে। - SQL কুয়েরি চালানো:
SELECTকুয়েরি ব্যবহার করেpeopleটেবিল থেকে ডাটা রিট্রিভ করা হচ্ছে। - TableView: JavaFX
TableViewব্যবহার করে ডাটাবেস থেকে পাওয়া ডাটা ইউজারের জন্য প্রদর্শন করা হচ্ছে। - Person Class:
Personক্লাস একটি POJO (Plain Old Java Object) যাTableViewএর জন্য ডাটা ধারণ করে।
MySQL ডাটাবেস সন্নিবেশ (Database Structure Example):
ধরা যাক, আপনি যে ডাটাবেস থেকে ডাটা রিট্রিভ করছেন তার নাম mydatabase এবং টেবিলের নাম people। এর সঠিক কাঠামো হতে পারে এমন:
CREATE DATABASE mydatabase;
USE mydatabase;
CREATE TABLE people (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
age INT,
city VARCHAR(100)
);
INSERT INTO people (name, age, city) VALUES ('John Doe', 25, 'New York');
INSERT INTO people (name, age, city) VALUES ('Jane Smith', 30, 'Los Angeles');
সারাংশ:
- JavaFX এবং JDBC এর মাধ্যমে আপনি একটি ডাটাবেসের সাথে সংযোগ স্থাপন এবং ডাটা রিট্রিভ করে ইউজার ইন্টারফেসে প্রদর্শন করতে পারেন।
- এখানে, JavaFX এর TableView ব্যবহৃত হয়েছে, যা ডাটাবেস থেকে পাওয়া ডাটা সুন্দরভাবে প্রদর্শন করে। JDBC ব্যবহার করে ডাটাবেসে
SELECTকুয়েরি চালিয়ে ডাটা রিট্রিভ করা হয়েছে।
Read more