Java Database Connectivity (JDBC) ব্যবহার করে ডেটাবেসের সাথে যোগাযোগ করা এবং ডেটা পরিচালনা করা যায়। নিচে JDBC এর একটি সাধারণ উদাহরণ দেওয়া হলো:
JDBC ব্যবহার করার জন্য প্রথমে কিছু মৌলিক স্টেপ অনুসরণ করতে হবে:
Connection
অবজেক্ট ব্যবহার করে ডেটাবেসের সাথে সংযোগ স্থাপন করা হয়।Statement
বা PreparedStatement
ব্যবহার করে SQL কুয়েরি রান করা হয়।ResultSet
ব্যবহার করে SQL কুয়েরির ফলাফল পাওয়া যায়।import java.sql.*;
public class JDBCExample {
public static void main(String[] args) {
// ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য প্রয়োজনীয় তথ্য
String url = "jdbc:mysql://localhost:3306/testdb"; // ডেটাবেস URL
String user = "root"; // ইউজারনেম
String password = "password"; // পাসওয়ার্ড
// SQL কুয়েরি
String query = "SELECT * FROM employees";
// JDBC অবজেক্ট
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// JDBC ড্রাইভার লোড
Class.forName("com.mysql.cj.jdbc.Driver");
// ডেটাবেসে সংযোগ স্থাপন
connection = DriverManager.getConnection(url, user, password);
// SQL কুয়েরি চালানোর জন্য Statement তৈরি
statement = connection.createStatement();
// কুয়েরি রান করা
resultSet = statement.executeQuery(query);
// ফলাফল প্রিন্ট করা
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String department = resultSet.getString("department");
System.out.println("ID: " + id + ", Name: " + name + ", Department: " + department);
}
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
} finally {
// সংযোগ বন্ধ করা
try {
if (resultSet != null) resultSet.close();
if (statement != null) statement.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
import java.sql.*;
public class JDBCInsertExample {
public static void main(String[] args) {
// ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য প্রয়োজনীয় তথ্য
String url = "jdbc:mysql://localhost:3306/testdb";
String user = "root";
String password = "password";
// SQL কুয়েরি
String query = "INSERT INTO employees (name, department) VALUES (?, ?)";
// JDBC অবজেক্ট
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
// JDBC ড্রাইভার লোড
Class.forName("com.mysql.cj.jdbc.Driver");
// ডেটাবেসে সংযোগ স্থাপন
connection = DriverManager.getConnection(url, user, password);
// SQL কুয়েরি চালানোর জন্য PreparedStatement তৈরি
preparedStatement = connection.prepareStatement(query);
// প্যারামিটার সেট করা
preparedStatement.setString(1, "Alice");
preparedStatement.setString(2, "HR");
// ইনসার্ট কুয়েরি রান করা
int rowsAffected = preparedStatement.executeUpdate();
System.out.println("Rows affected: " + rowsAffected);
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
} finally {
// সংযোগ বন্ধ করা
try {
if (preparedStatement != null) preparedStatement.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
import java.sql.*;
public class JDBCUpdateExample {
public static void main(String[] args) {
// ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য প্রয়োজনীয় তথ্য
String url = "jdbc:mysql://localhost:3306/testdb";
String user = "root";
String password = "password";
// SQL কুয়েরি
String query = "UPDATE employees SET department = ? WHERE id = ?";
// JDBC অবজেক্ট
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
// JDBC ড্রাইভার লোড
Class.forName("com.mysql.cj.jdbc.Driver");
// ডেটাবেসে সংযোগ স্থাপন
connection = DriverManager.getConnection(url, user, password);
// SQL কুয়েরি চালানোর জন্য PreparedStatement তৈরি
preparedStatement = connection.prepareStatement(query);
// প্যারামিটার সেট করা
preparedStatement.setString(1, "IT");
preparedStatement.setInt(2, 1); // ID = 1 এর রেকর্ড আপডেট
// আপডেট কুয়েরি রান করা
int rowsAffected = preparedStatement.executeUpdate();
System.out.println("Rows affected: " + rowsAffected);
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
} finally {
// সংযোগ বন্ধ করা
try {
if (preparedStatement != null) preparedStatement.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
import java.sql.*;
public class JDBCDeleteExample {
public static void main(String[] args) {
// ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য প্রয়োজনীয় তথ্য
String url = "jdbc:mysql://localhost:3306/testdb";
String user = "root";
String password = "password";
// SQL কুয়েরি
String query = "DELETE FROM employees WHERE id = ?";
// JDBC অবজেক্ট
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
// JDBC ড্রাইভার লোড
Class.forName("com.mysql.cj.jdbc.Driver");
// ডেটাবেসে সংযোগ স্থাপন
connection = DriverManager.getConnection(url, user, password);
// SQL কুয়েরি চালানোর জন্য PreparedStatement তৈরি
preparedStatement = connection.prepareStatement(query);
// প্যারামিটার সেট করা
preparedStatement.setInt(1, 1); // ID = 1 এর রেকর্ড ডিলিট
// ডিলিট কুয়েরি রান করা
int rowsAffected = preparedStatement.executeUpdate();
System.out.println("Rows affected: " + rowsAffected);
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
} finally {
// সংযোগ বন্ধ করা
try {
if (preparedStatement != null) preparedStatement.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
JDBC হল একটি API যা Java প্রোগ্রামগুলিকে রিলেশনাল ডেটাবেসের সাথে যোগাযোগ করতে সহায়তা করে। এই API ডেটাবেসের সাথে সংযোগ স্থাপন, ডেটা পরিচালনা, কুয়েরি চালানো এবং ফলাফল ফেরত আনা সহ বিভিন্ন কাজের জন্য ব্যবহৃত হয়। JDBC API অনেক ধরণের ডেটাবেস যেমন MySQL, PostgreSQL, Oracle, SQL Server ইত্যাদির জন্য ড্রাইভার সরবরাহ করে।
এগুলো ছিল JDBC এর কিছু উদাহরণ।
জাভা (Java) দিয়ে JDBC (Java Database Connectivity) ব্যবহার করে MySQL বা অন্য ডেটাবেসের সাথে সংযোগ স্থাপন করার উদাহরণ নিচে দেওয়া হল। JDBC এর মাধ্যমে Java অ্যাপ্লিকেশন ডেটাবেসের সাথে সংযোগ করে ডেটা ইনসার্ট, আপডেট, বা রিট্রিভ করতে পারে।
ধরা যাক, আপনি MySQL ডেটাবেসের সাথে সংযোগ করতে চান। এই উদাহরণে একটি সিম্পল JDBC প্রোগ্রাম লেখা হবে যা MySQL ডেটাবেসে সংযোগ স্থাপন করবে এবং একটি সিম্পল SELECT কুয়েরি এক্সিকিউট করবে।
প্রথমে, MySQL JDBC ড্রাইভার ডাউনলোড এবং প্রজেক্টে যোগ করতে হবে। Maven বা Gradle ব্যবহার করলে সহজে লাইব্রেরি যুক্ত করা যাবে। Maven-এর জন্য pom.xml
ফাইলের মধ্যে নিচের ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version> <!-- আপনার ড্রাইভারের ভার্সন অনুসারে পরিবর্তন করুন -->
</dependency>
এখানে একটি উদাহরণ দেওয়া হল যা MySQL ডেটাবেসের সাথে সংযোগ স্থাপন করবে এবং একটি SELECT
কুয়েরি চালাবে।
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
public class JdbcExample {
public static void main(String[] args) {
// ডেটাবেস সংযোগের জন্য প্রয়োজনীয় ভেরিয়েবল
String url = "jdbc:mysql://localhost:3306/your_database_name"; // আপনার ডেটাবেসের নাম এখানে দিন
String username = "your_username"; // ডেটাবেসের ইউজারনেম
String password = "your_password"; // ডেটাবেসের পাসওয়ার্ড
// JDBC সংযোগ স্থাপন
try {
// ড্রাইভার লোড করুন
Class.forName("com.mysql.cj.jdbc.Driver");
// ডেটাবেস সংযোগ তৈরি করুন
Connection connection = DriverManager.getConnection(url, username, password);
// স্টেটমেন্ট তৈরি করুন
Statement statement = connection.createStatement();
// একটি SELECT কুয়েরি চালান
String sql = "SELECT id, name, email FROM users"; // এখানে 'users' টেবিলের নাম দিন
ResultSet resultSet = statement.executeQuery(sql);
// ফলাফল প্রিন্ট করুন
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String email = resultSet.getString("email");
System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email);
}
// রিসোর্স বন্ধ করুন
resultSet.close();
statement.close();
connection.close();
} catch (ClassNotFoundException e) {
System.out.println("JDBC ড্রাইভার লোড করতে সমস্যা হয়েছে: " + e.getMessage());
} catch (SQLException e) {
System.out.println("ডেটাবেস সংযোগ বা কুয়েরি চালাতে সমস্যা হয়েছে: " + e.getMessage());
}
}
}
DriverManager.getConnection()
: এটি ডেটাবেসের সাথে সংযোগ স্থাপন করার জন্য ব্যবহৃত হয়। URL, ইউজারনেম এবং পাসওয়ার্ড প্যারামিটার হিসেবে গ্রহণ করে।Statement
: এটি SQL কুয়েরি চালানোর জন্য ব্যবহৃত হয়। এখানে executeQuery()
মেথডটি একটি SELECT
কুয়েরি চালানোর জন্য ব্যবহৃত হয়েছে।ResultSet
: এটি কুয়েরি থেকে ফলাফল ধারণ করে এবং next()
মেথডের মাধ্যমে রেকর্ডগুলোর মাধ্যমে ট্রাভার্স করা হয়।SQLException
: যদি কোনো SQL সম্পর্কিত সমস্যা হয় তবে এটি ক্যাচ করা হয়।ডেটাবেস সেটআপ করতে MySQL-এ একটি ডেটাবেস এবং টেবিল তৈরি করতে হবে:
CREATE DATABASE your_database_name;
USE your_database_name;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
email VARCHAR(255)
);
INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');
INSERT INTO users (name, email) VALUES ('Jane Smith', 'jane@example.com');
উপরের জাভা প্রোগ্রামটি চালিয়ে যদি আপনি সঠিকভাবে সংযোগ স্থাপন করতে সক্ষম হন, তবে এটি ডেটাবেস থেকে users
টেবিলের সমস্ত রেকর্ড প্রিন্ট করবে।
যদি আপনি অন্য কোন ডেটাবেস যেমন PostgreSQL বা Oracle ব্যবহার করেন, তাহলে শুধু JDBC URL এবং ড্রাইভার পরিবর্তন করতে হবে। উদাহরণস্বরূপ:
jdbc:postgresql://localhost:5432/your_database_name
jdbc:oracle:thin:@localhost:1521:your_database_name
এভাবে আপনি JDBC ব্যবহার করে Java অ্যাপ্লিকেশন থেকে বিভিন্ন ডেটাবেসের সাথে সংযোগ স্থাপন করতে পারবেন।
PreparedStatement
হল JDBC (Java Database Connectivity) API-র একটি ক্লাস যা SQL ইনজেকশন থেকে রক্ষা পাওয়ার জন্য এবং ডেটাবেসে ডাইনামিক কুয়েরি এক্সিকিউট করার জন্য ব্যবহৃত হয়। এটি Statement
ইন্টারফেসের একটি উন্নত সংস্করণ, যা SQL কুয়েরি তৈরি এবং এক্সিকিউট করার জন্য ব্যবহৃত হয়। PreparedStatement
ব্যবহারের মাধ্যমে SQL কুয়েরি গুলি পুনঃব্যবহারযোগ্য এবং নিরাপদ হয়।
PreparedStatement
ব্যবহার করে একটি SQL কুয়েরি এক্সিকিউট করাএই উদাহরণে, আমরা একটি ডাটাবেসে কনেকশন স্থাপন করব, একটি PreparedStatement
ব্যবহার করে ডাটাবেসে একটি ইনসার্ট কুয়েরি এক্সিকিউট করব।
প্রথমে, নিশ্চিত হন যে আপনার ডাটাবেস এবং টেবিল প্রস্তুত আছে। ধরুন আমরা একটি Employee
টেবিল ব্যবহার করব, যার মধ্যে তিনটি কলাম আছে: id
, name
, এবং salary
।
CREATE TABLE Employee (
id INT PRIMARY KEY,
name VARCHAR(50),
salary DECIMAL(10, 2)
);
এখন, নিচের জাভা কোডটি দেখুন যা PreparedStatement
ব্যবহার করে ডাটাবেসে ডাটা ইনসার্ট করবে।
import java.sql.*;
public class PreparedStatementExample {
public static void main(String[] args) {
// ডাটাবেস কনফিগারেশন
String url = "jdbc:mysql://localhost:3306/your_database_name"; // আপনার ডাটাবেস URL
String user = "root"; // ডাটাবেস ইউজার
String password = "password"; // ডাটাবেস পাসওয়ার্ড
// SQL কুয়েরি
String sql = "INSERT INTO Employee (id, name, salary) VALUES (?, ?, ?)";
// কনেকশন এবং PreparedStatement ডিক্লেয়ারেশন
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
// প্রথম প্রিপেয়ারড স্টেটমেন্টের জন্য প্যারামিটার সেট করা
pstmt.setInt(1, 101); // id
pstmt.setString(2, "John Doe"); // name
pstmt.setBigDecimal(3, new BigDecimal("50000.00")); // salary
// ইনসার্ট কুয়েরি এক্সিকিউট করা
int rowsAffected = pstmt.executeUpdate();
System.out.println("Rows affected: " + rowsAffected);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
url
: ডাটাবেসের URL, যেখানে localhost:3306
হলো MySQL সার্ভারের লোকাল হোস্ট এবং your_database_name
হলো আপনার ডাটাবেসের নাম।user
এবং password
: আপনার ডাটাবেসের ইউজারনেম এবং পাসওয়ার্ড।"INSERT INTO Employee (id, name, salary) VALUES (?, ?, ?)"
: এখানে ?
হল প্লেসহোল্ডার যা পরবর্তীতে ডাইনামিকভাবে পূর্ণ করা হবে।conn.prepareStatement(sql)
-এ sql
প্যারামিটার হিসেবে কুয়েরি পাঠানো হয়।pstmt.setInt(1, 101)
- প্রথম ?
প্লেসহোল্ডারকে ইনপুট দেওয়া হচ্ছে। এখানে 1
হল প্লেসহোল্ডারের অবস্থান (প্রথমটি, দ্বিতীয়টি, তৃতীয়টি ইত্যাদি) এবং 101
হলো তার মান (id)।pstmt.setString(2, "John Doe")
- দ্বিতীয় প্লেসহোল্ডার name
পূর্ণ করা হচ্ছে।pstmt.setBigDecimal(3, new BigDecimal("50000.00"))
- তৃতীয় প্লেসহোল্ডার salary
পূর্ণ করা হচ্ছে।pstmt.executeUpdate()
মেথডটি SQL কুয়েরি এক্সিকিউট করে এবং যে সংখ্যক সারি প্রভাবিত হয়েছে তা ফিরিয়ে দেয়।SQLException
হ্যান্ডলিংয়ের মাধ্যমে ডাটাবেস সম্পর্কিত যে কোনো সমস্যা ধরতে পারেন।PreparedStatement
:এই উদাহরণটি দেখায় কিভাবে PreparedStatement
ব্যবহার করে ডাটাবেসে ডাটা ইনসার্ট করা যায়। PreparedStatement
হল JDBC API-র একটি শক্তিশালী এবং নিরাপদ উপায় যা SQL কুয়েরি এক্সিকিউশনের জন্য ব্যবহৃত হয়।
ResultSet
একটি জাভা ইন্টারফেস যা ডেটাবেস থেকে SQL কুয়েরি রেজাল্ট সংগ্রহ করে। ResultSet
অবজেক্টের মাধ্যমে আপনি ডেটাবেসের ডেটা অ্যাক্সেস করতে পারেন এবং বিভিন্ন রকমের অপারেশন যেমন ডেটা দেখানো, আপডেট করা, ডিলিট করা ইত্যাদি করতে পারেন।
এখানে একটি উদাহরণ দেওয়া হয়েছে যেখানে ডেটাবেস থেকে ডেটা রিট্রাইভ করা হচ্ছে এবং তা কনসোলে দেখানো হচ্ছে।
প্রথমে, ডেটাবেসে কানেক্ট করতে হবে। এতে JDBC (Java Database Connectivity) ব্যবহার করা হয়।
Statement
বা PreparedStatement
ব্যবহার করে SQL কুয়েরি চালানো হয় এবং এর মাধ্যমে ResultSet
তৈরি করা হয়।
ResultSet
অবজেক্টের মাধ্যমে ডেটা রিট্রাইভ করা এবং next()
মেথড ব্যবহার করে ডেটার মধ্যে লুপ করা হয়।
ধরা যাক, আপনার ডেটাবেসে একটি employees
টেবিল রয়েছে, যার মধ্যে id
, name
, এবং salary
কলাম রয়েছে।
import java.sql.*;
public class DatabaseExample {
public static void main(String[] args) {
// ডেটাবেস সংযোগের জন্য ভেরিয়েবল
String url = "jdbc:mysql://localhost:3306/yourdatabase"; // আপনার ডেটাবেসের URL
String username = "root"; // আপনার ডেটাবেসের ব্যবহারকারীর নাম
String password = "password"; // আপনার ডেটাবেসের পাসওয়ার্ড
// ডেটাবেস কানেকশন এবং ResultSet তৈরি করার জন্য টেকনিক্যাল কোড
try {
// ডেটাবেসে কানেক্ট করা
Connection connection = DriverManager.getConnection(url, username, password);
// SQL কুয়েরি তৈরি করা
String sql = "SELECT * FROM employees"; // এখানে 'employees' হল টেবিলের নাম
// Statement তৈরি করা
Statement statement = connection.createStatement();
// SQL কুয়েরি চালানো এবং ফলাফল পাওয়া
ResultSet resultSet = statement.executeQuery(sql);
// ডেটা রিট্রাইভ করা এবং দেখানো
while (resultSet.next()) {
int id = resultSet.getInt("id"); // 'id' কলাম
String name = resultSet.getString("name"); // 'name' কলাম
double salary = resultSet.getDouble("salary"); // 'salary' কলাম
// ডেটা কনসোলে প্রিন্ট করা
System.out.println("ID: " + id + ", Name: " + name + ", Salary: " + salary);
}
// কানেকশন বন্ধ করা
resultSet.close();
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
DriverManager.getConnection()
ব্যবহার করে ডেটাবেসে কানেক্ট করা হচ্ছে। এখানে আপনি আপনার ডেটাবেসের ইউআরএল, ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রদান করেন।Statement
অবজেক্ট ব্যবহার করে SQL কুয়েরি (এখানে "SELECT * FROM employees"
) চালানো হয়।ResultSet
অবজেক্টের মাধ্যমে কুয়েরি থেকে পাওয়া ডেটা একে একে বের করা হয়। resultSet.next()
ব্যবহার করে আপনি এক একটি রেকর্ড (রো) অ্যাক্সেস করতে পারেন।resultSet.getInt()
, resultSet.getString()
, এবং resultSet.getDouble()
ব্যবহার করে বিভিন্ন ডেটা টাইপের ডেটা রিট্রাইভ করা হয়।ResultSet
, Statement
, এবং Connection
অবজেক্টগুলো শেষ হওয়ার পর বন্ধ করা হয়।আপনি যদি MySQL ব্যবহার করেন, তবে প্রথমে একটি ডেটাবেস এবং টেবিল তৈরি করতে হবে।
CREATE DATABASE yourdatabase;
USE yourdatabase;
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
salary DOUBLE
);
INSERT INTO employees (name, salary) VALUES ('John Doe', 50000);
INSERT INTO employees (name, salary) VALUES ('Jane Smith', 60000);
এই উদাহরণটি দেখিয়েছে কিভাবে Java JDBC ব্যবহার করে ডেটাবেস থেকে ডেটা রিট্রাইভ করা এবং ResultSet
এর মাধ্যমে ডেটা কনসোলে প্রদর্শন করা হয়। আপনি এই পদ্ধতি ব্যবহার করে ডেটাবেসের সাথে যোগাযোগ করতে এবং প্রয়োজনীয় ডেটা প্রসেস করতে পারবেন।
জাভাতে ট্রানজেকশন ম্যানেজমেন্ট ব্যবহৃত হয় যখন একাধিক ডেটাবেস কুয়েরি একত্রে এক্সিকিউট করতে হয় এবং যদি কোনো কুয়েরি ব্যর্থ হয়, তাহলে পুরো ট্রানজেকশনটি রোলব্যাক করতে হবে। এর ফলে ডেটাবেসে কোনো অসম্পূর্ণ বা ভুল ডেটা প্রবেশ করতে পারে না।
নিচে একটি Transaction Management Example দেওয়া হলো, যেখানে ডেটাবেসে Multiple Queries একত্রে এক্সিকিউট করা হয়েছে এবং commit এবং rollback এর মাধ্যমে ট্রানজেকশন পরিচালনা করা হয়েছে।
import java.sql.*;
public class TransactionManagementExample {
public static void main(String[] args) {
// ডেটাবেস কনেকশন সেটআপ
String url = "jdbc:mysql://localhost:3306/your_database";
String user = "root";
String password = "your_password";
Connection connection = null;
PreparedStatement stmt1 = null;
PreparedStatement stmt2 = null;
try {
// ডেটাবেস কনেকশন তৈরি
connection = DriverManager.getConnection(url, user, password);
// Auto-commit বন্ধ করা (যতক্ষণ না commit করা হবে, ততক্ষণ পরিবর্তন হবে না)
connection.setAutoCommit(false);
// প্রথম কুয়েরি
String query1 = "UPDATE accounts SET balance = balance - 100 WHERE account_id = ?";
stmt1 = connection.prepareStatement(query1);
stmt1.setInt(1, 1); // account_id = 1
stmt1.executeUpdate();
// দ্বিতীয় কুয়েরি
String query2 = "UPDATE accounts SET balance = balance + 100 WHERE account_id = ?";
stmt2 = connection.prepareStatement(query2);
stmt2.setInt(1, 2); // account_id = 2
stmt2.executeUpdate();
// যদি কোনো সমস্যা না হয়, তাহলে ট্রানজেকশন কমিট করা হবে
connection.commit();
System.out.println("Transaction Completed Successfully.");
} catch (SQLException e) {
// যদি কোনো ব্যর্থতা ঘটে, তাহলে রোলব্যাক হবে
try {
if (connection != null) {
connection.rollback();
System.out.println("Transaction Rolled Back due to an error.");
}
} catch (SQLException rollbackEx) {
rollbackEx.printStackTrace();
}
e.printStackTrace();
} finally {
try {
// রিসোর্সগুলো বন্ধ করা
if (stmt1 != null) stmt1.close();
if (stmt2 != null) stmt2.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
DriverManager.getConnection()
ব্যবহার করা হয়েছে। এখানে your_database
, root
, এবং your_password
আপনার ডেটাবেসের নাম, ব্যবহারকারী নাম এবং পাসওয়ার্ড দ্বারা প্রতিস্থাপন করুন।connection.commit()
কল করা হয়, যা সমস্ত পরিবর্তন ডেটাবেসে স্থায়ী করে।connection.rollback()
কল করা হয়, যা সমস্ত পরিবর্তন বাতিল করে দেয় এবং ডেটাবেস পূর্বাবস্থায় ফিরে আসে।যদি সব কুয়েরি সফলভাবে সম্পন্ন হয়, তাহলে আউটপুট হবে:
Transaction Completed Successfully.
যদি কোনো কুয়েরি ব্যর্থ হয়, তাহলে আউটপুট হবে:
Transaction Rolled Back due to an error.
ব্যাচ প্রসেসিং (Batch Processing) হলো একাধিক SQL স্টেটমেন্ট একসাথে এক্সিকিউট করার একটি কৌশল। এটি ডেটাবেসে বড় পরিমাণ ডেটা আপডেট বা ইনসার্ট করার সময় ব্যবহৃত হয়, যেখানে একাধিক SQL স্টেটমেন্ট একসাথে এক্সিকিউট করে প্রক্রিয়াটিকে দ্রুত করা যায়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Java ব্যবহার করে একাধিক SQL স্টেটমেন্ট একত্রে এক্সিকিউট করা হয়েছে:
এখানে একটি উদাহরণ দেয়া হচ্ছে যেখানে জাভা JDBC ব্যবহার করে MySQL ডেটাবেসে একাধিক SQL স্টেটমেন্ট একসাথে এক্সিকিউট করা হচ্ছে।
import java.sql.*;
public class BatchProcessingExample {
public static void main(String[] args) {
// ডেটাবেস সংযোগের জন্য ভেরিয়েবল
Connection conn = null;
Statement stmt = null;
try {
// ডেটাবেস ড্রাইভার লোড
Class.forName("com.mysql.cj.jdbc.Driver");
// ডেটাবেস সংযোগ
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "root", "password");
// অটোমেটিক কমিট বন্ধ করা
conn.setAutoCommit(false);
// স্টেটমেন্ট অবজেক্ট তৈরি
stmt = conn.createStatement();
// ব্যাচের মধ্যে SQL স্টেটমেন্ট যোগ করা
stmt.addBatch("INSERT INTO employees (id, name, age) VALUES (1, 'John Doe', 30)");
stmt.addBatch("INSERT INTO employees (id, name, age) VALUES (2, 'Jane Smith', 25)");
stmt.addBatch("UPDATE employees SET age = 35 WHERE id = 1");
stmt.addBatch("DELETE FROM employees WHERE id = 2");
// ব্যাচ এক্সিকিউট করা
int[] updateCounts = stmt.executeBatch();
// পরিবর্তনগুলি ডেটাবেসে কমিট করা
conn.commit();
// ব্যাচ এক্সিকিউশনের ফলাফল দেখানো
for (int i : updateCounts) {
System.out.println("Affected rows: " + i);
}
System.out.println("ব্যাচ প্রসেসিং সফলভাবে সম্পন্ন হয়েছে।");
} catch (SQLException se) {
// SQL এক্সপেকশন হ্যান্ডলিং
if (conn != null) {
try {
System.out.println("ট্রানজেকশন ব্যর্থ, রোলব্যাক হচ্ছে...");
conn.rollback();
} catch (SQLException re) {
re.printStackTrace();
}
}
se.printStackTrace();
} catch (Exception e) {
// সাধারণ এক্সপেকশন হ্যান্ডলিং
e.printStackTrace();
} finally {
try {
// রিসোর্স বন্ধ করা
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
}
}
DriverManager.getConnection()
ব্যবহার করে।conn.setAutoCommit(false)
ব্যবহার করে, অটোমেটিক কমিট বন্ধ করা হয়। অর্থাৎ, SQL স্টেটমেন্টগুলো একসাথে execute হবে এবং পরে আমরা commit()
কল করে সেগুলো ডেটাবেসে প্রলম্বিতভাবে সংরক্ষণ করব।stmt.addBatch()
ব্যবহার করে SQL স্টেটমেন্টগুলো ব্যাচে যোগ করা হয়।stmt.executeBatch()
কল করে ব্যাচ প্রসেসিং কার্যকর করা হয়।conn.commit()
ব্যবহার করে ডেটাবেসে পরিবর্তনগুলি সংরক্ষণ করা হয়।conn.rollback()
ব্যবহার করে সমস্ত পরিবর্তন বাতিল করা হয়।এভাবে আপনি Java JDBC ব্যবহার করে একাধিক SQL স্টেটমেন্ট ব্যাচে execute করতে পারেন এবং আপনার ডেটাবেস অপারেশনগুলোকে আরও দক্ষ ও দ্রুততর করতে পারেন।
Read more