Practical উদাহরণ: Simple CRUD Application তৈরি করা

JavaFX এবং Database Integration - জাভাএফএক্স (JavaFx) - Java Technologies

331

JavaFX তে একটি Simple CRUD (Create, Read, Update, Delete) Application তৈরি করার উদাহরণ এখানে দেয়া হলো। এই অ্যাপ্লিকেশনটি একটি সাধারণ Student মডেল ব্যবহার করবে এবং একটি GUI তৈরি করবে যেখানে আপনি Create, Read, Update, এবং Delete অপারেশন করতে পারবেন।

আমরা SQLite ডাটাবেস ব্যবহার করব যেখানে Student নামক একটি টেবিল থাকবে এবং JavaFX এর GUI দিয়ে এই টেবিলের উপর CRUD অপারেশন সম্পাদন করা হবে।

Step 1: প্রয়োজনীয় লাইব্রেরি যুক্ত করা

আপনি যদি Maven ব্যবহার করেন, তাহলে আপনার pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করুন:

<dependencies>
    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
        <version>3.36.0.3</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>19</version>
    </dependency>
</dependencies>

এটি SQLite ডাটাবেস এবং JavaFX GUI লাইব্রেরি যুক্ত করবে।

Step 2: Student ক্লাস তৈরি করা

প্রথমে, একটি Student ক্লাস তৈরি করি, যাতে আমরা id, name, এবং age ফিল্ডগুলি রাখব:

public class Student {
    private int id;
    private String name;
    private int age;

    // Constructor
    public Student(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    // Getter and Setter methods
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Step 3: Database হ্যান্ডলিং ক্লাস তৈরি করা

এখন, একটি DatabaseHelper ক্লাস তৈরি করবো যা SQLite ডাটাবেসের সাথে সংযোগ স্থাপন করবে এবং CRUD অপারেশনগুলো পরিচালনা করবে।

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class DatabaseHelper {
    private static final String URL = "jdbc:sqlite:students.db";

    // Create a connection to the database
    public static Connection connect() throws SQLException {
        return DriverManager.getConnection(URL);
    }

    // Create table
    public static void createTable() {
        String createTableSQL = "CREATE TABLE IF NOT EXISTS students (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)";
        try (Connection conn = connect(); Statement stmt = conn.createStatement()) {
            stmt.execute(createTableSQL);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    // Add a student
    public static void addStudent(Student student) {
        String sql = "INSERT INTO students(name, age) VALUES(?, ?)";
        try (Connection conn = connect(); PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.setString(1, student.getName());
            pstmt.setInt(2, student.getAge());
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    // Get all students
    public static List<Student> getAllStudents() {
        List<Student> students = new ArrayList<>();
        String sql = "SELECT * FROM students";
        try (Connection conn = connect(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql)) {
            while (rs.next()) {
                students.add(new Student(rs.getInt("id"), rs.getString("name"), rs.getInt("age")));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return students;
    }

    // Update a student
    public static void updateStudent(Student student) {
        String sql = "UPDATE students SET name = ?, age = ? WHERE id = ?";
        try (Connection conn = connect(); PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.setString(1, student.getName());
            pstmt.setInt(2, student.getAge());
            pstmt.setInt(3, student.getId());
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    // Delete a student
    public static void deleteStudent(int id) {
        String sql = "DELETE FROM students WHERE id = ?";
        try (Connection conn = connect(); PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.setInt(1, id);
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Step 4: JavaFX GUI তৈরি করা

এখন, JavaFX GUI তৈরি করি যেখানে আমরা CRUD অপারেশনগুলো চালাতে পারব।

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.util.List;

public class CRUDApplication extends Application {
    private TextField nameField, ageField;
    private Button addButton, updateButton, deleteButton;
    private ListView<String> studentListView;

    @Override
    public void start(Stage primaryStage) {
        // Initialize UI components
        nameField = new TextField();
        nameField.setPromptText("Enter Name");

        ageField = new TextField();
        ageField.setPromptText("Enter Age");

        addButton = new Button("Add Student");
        updateButton = new Button("Update Student");
        deleteButton = new Button("Delete Student");

        studentListView = new ListView<>();

        // Setup button actions
        addButton.setOnAction(e -> addStudent());
        updateButton.setOnAction(e -> updateStudent());
        deleteButton.setOnAction(e -> deleteStudent());

        // Layout setup
        VBox layout = new VBox(10);
        layout.setPadding(new Insets(20));
        layout.getChildren().addAll(nameField, ageField, addButton, updateButton, deleteButton, studentListView);

        // Create and show scene
        Scene scene = new Scene(layout, 300, 400);
        primaryStage.setTitle("Simple CRUD Application");
        primaryStage.setScene(scene);
        primaryStage.show();

        // Load students on start
        loadStudents();
    }

    private void addStudent() {
        String name = nameField.getText();
        int age = Integer.parseInt(ageField.getText());
        Student student = new Student(0, name, age);
        DatabaseHelper.addStudent(student);
        loadStudents();
    }

    private void updateStudent() {
        String selectedStudent = studentListView.getSelectionModel().getSelectedItem();
        if (selectedStudent != null) {
            String[] parts = selectedStudent.split(" - ");
            int id = Integer.parseInt(parts[0]);
            String name = nameField.getText();
            int age = Integer.parseInt(ageField.getText());

            Student student = new Student(id, name, age);
            DatabaseHelper.updateStudent(student);
            loadStudents();
        }
    }

    private void deleteStudent() {
        String selectedStudent = studentListView.getSelectionModel().getSelectedItem();
        if (selectedStudent != null) {
            String[] parts = selectedStudent.split(" - ");
            int id = Integer.parseInt(parts[0]);
            DatabaseHelper.deleteStudent(id);
            loadStudents();
        }
    }

    private void loadStudents() {
        List<Student> students = DatabaseHelper.getAllStudents();
        studentListView.getItems().clear();
        for (Student student : students) {
            studentListView.getItems().add(student.getId() + " - " + student.getName() + " - " + student.getAge());
        }
    }

    public static void main(String[] args) {
        DatabaseHelper.createTable();  // Ensure the table is created on startup
        launch(args);
    }
}

Step 5: প্রকল্প চালানো

  1. প্রথমে আপনার প্রকল্পে সমস্ত কোড যোগ করুন।
  2. ডাটাবেসের জন্য students.db ফাইলটি তৈরি হবে।
  3. প্রকল্পটি চালিয়ে একটি GUI দেখতে পাবেন যেখানে আপনি Add, Update, এবং Delete অপারেশন করতে পারবেন।

এই উদাহরণটি JavaFX GUI ব্যবহার করে একটি সহজ CRUD অ্যাপ্লিকেশন তৈরি করেছে। এটি SQLite ডাটাবেসের সাথে সংযুক্ত এবং বিভিন্ন CRUD অপারেশন সম্পাদন করে, যা সাধারণ ডাটা ম্যানেজমেন্ট অ্যাপ্লিকেশন তৈরির জন্য একটি ভাল মডেল।

Content added By
Promotion

Are you sure to start over?

Loading...