Java-তে CRUD (Create, Read, Update, Delete) অপারেশন এবং Query Execution ডেটাবেস পরিচালনার মূল প্রক্রিয়া। JDBC (Java Database Connectivity) ব্যবহার করে Java অ্যাপ্লিকেশনগুলি ডেটাবেসের সঙ্গে যোগাযোগ করতে পারে এবং বিভিন্ন ধরনের SQL কুয়েরি সম্পাদন করতে পারে।
এই টিউটোরিয়ালে আমরা JDBC ব্যবহার করে ডেটাবেসের সাথে CRUD অপারেশন এবং SQL কুয়েরি এক্সিকিউশন দেখাবো।
1. JDBC Overview
JDBC (Java Database Connectivity) একটি API যা Java প্রোগ্রামগুলোকে ডেটাবেসের সাথে যোগাযোগ করার জন্য ব্যবহৃত হয়। এটি ডেটাবেসের সাথে সংযোগ স্থাপন, কুয়েরি তৈরি এবং এক্সিকিউট করা, এবং ফলাফল প্রাপ্তি সম্ভব করে।
JDBC ব্যবহারের মৌলিক পদক্ষেপ:
- ড্রাইভার লোড করা: ডেটাবেস সংযোগের জন্য উপযুক্ত JDBC ড্রাইভার লোড করতে হয়।
- ডেটাবেসে সংযোগ স্থাপন:
Connectionঅবজেক্ট ব্যবহার করে ডেটাবেসে সংযোগ করা হয়। - SQL কুয়েরি তৈরি এবং এক্সিকিউট করা: SQL কুয়েরি তৈরি করে
StatementঅথবাPreparedStatementব্যবহার করে এক্সিকিউট করা হয়। - ফলাফল প্রাপ্তি: কুয়েরি এক্সিকিউট করার পর, ফলাফল
ResultSetথেকে পাওয়া যায়। - কনেকশন বন্ধ করা: অপারেশন শেষে ডেটাবেস সংযোগ বন্ধ করা হয়।
2. Database Connection Example
Java দিয়ে ডেটাবেস সংযোগ স্থাপন করার জন্য JDBC-র Connection ক্লাস ব্যবহার করা হয়। নিচে MySQL ডেটাবেসের সাথে সংযোগ স্থাপনের উদাহরণ দেয়া হলো।
প্রয়োজনীয় JAR ফাইল: MySQL ড্রাইভার (যেমন: mysql-connector-java JAR ফাইল) আপনার প্রজেক্টে যুক্ত করতে হবে।
import java.sql.*;
public class JDBCExample {
public static void main(String[] args) {
// ডেটাবেসের তথ্য
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
// ডেটাবেস সংযোগ
try {
// ড্রাইভার লোড
Class.forName("com.mysql.cj.jdbc.Driver");
// সংযোগ স্থাপন
Connection connection = DriverManager.getConnection(url, username, password);
// সফল সংযোগ
System.out.println("Connection established successfully!");
// কনেকশন বন্ধ করা
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
3. CRUD অপারেশন উদাহরণ
3.1 Create (INSERT)
ডেটাবেসে নতুন রেকর্ড ইনসার্ট করার জন্য INSERT কুয়েরি ব্যবহৃত হয়। নিচে Java দিয়ে INSERT অপারেশন করা হয়েছে।
public void insertRecord() {
try {
String query = "INSERT INTO users (name, age) VALUES (?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, "John Doe"); // name
preparedStatement.setInt(2, 30); // age
int rowsAffected = preparedStatement.executeUpdate();
System.out.println(rowsAffected + " record inserted.");
} catch (SQLException e) {
e.printStackTrace();
}
}
3.2 Read (SELECT)
ডেটাবেস থেকে তথ্য পড়তে SELECT কুয়েরি ব্যবহার করা হয়। নিচে Java দিয়ে SELECT অপারেশন করা হয়েছে।
public void readRecords() {
try {
String query = "SELECT * FROM users";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
while (resultSet.next()) {
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println("Name: " + name + ", Age: " + age);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
3.3 Update (UPDATE)
ডেটাবেসের একটি রেকর্ড আপডেট করতে UPDATE কুয়েরি ব্যবহৃত হয়। নিচে Java দিয়ে UPDATE অপারেশন করা হয়েছে।
public void updateRecord() {
try {
String query = "UPDATE users SET age = ? WHERE name = ?";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setInt(1, 35); // New age
preparedStatement.setString(2, "John Doe"); // Name
int rowsAffected = preparedStatement.executeUpdate();
System.out.println(rowsAffected + " record updated.");
} catch (SQLException e) {
e.printStackTrace();
}
}
3.4 Delete (DELETE)
ডেটাবেস থেকে একটি রেকর্ড মুছতে DELETE কুয়েরি ব্যবহৃত হয়। নিচে Java দিয়ে DELETE অপারেশন করা হয়েছে।
public void deleteRecord() {
try {
String query = "DELETE FROM users WHERE name = ?";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, "John Doe"); // Name
int rowsAffected = preparedStatement.executeUpdate();
System.out.println(rowsAffected + " record deleted.");
} catch (SQLException e) {
e.printStackTrace();
}
}
4. Query Execution Example
Java-তে SQL কুয়েরি এক্সিকিউশন করার জন্য Statement বা PreparedStatement ব্যবহার করা হয়। Statement সাধারণত স্থির (static) কুয়েরির জন্য ব্যবহৃত হয়, যেখানে PreparedStatement ডায়নামিক কুয়েরি এবং ব্যবহারকারী ইনপুটের জন্য ব্যবহৃত হয়।
4.1 Using Statement (Static Query)
public void executeStatement() {
try {
Statement statement = connection.createStatement();
String query = "SELECT * FROM users";
ResultSet resultSet = statement.executeQuery(query);
while (resultSet.next()) {
String name = resultSet.getString("name");
System.out.println("User Name: " + name);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
4.2 Using PreparedStatement (Dynamic Query)
public void executePreparedStatement() {
try {
String query = "SELECT * FROM users WHERE age = ?";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setInt(1, 30); // age parameter
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
String name = resultSet.getString("name");
System.out.println("User Name: " + name);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
5. Exception Handling in JDBC
JDBC অপারেশনগুলিতে কোনো সমস্যা হলে SQLException এর মাধ্যমে এক্সপেকশন ক্যাচ করা হয়। এটি ব্যবহৃত হয় ডেটাবেস সংযোগ এবং কুয়েরি এক্সিকিউশনের সময় ঘটে যাওয়া ত্রুটি সনাক্ত এবং পরিচালনা করার জন্য।
try {
// JDBC code here
} catch (SQLException e) {
System.err.println("Database error: " + e.getMessage());
e.printStackTrace();
}
সারাংশ
Java দিয়ে CRUD (Create, Read, Update, Delete) অপারেশন এবং Query Execution ডেটাবেস ম্যানিপুলেশন এর মূল ভিত্তি। JDBC ব্যবহার করে Java অ্যাপ্লিকেশনগুলি SQL কুয়েরি তৈরি, এক্সিকিউট এবং ডেটাবেস থেকে ফলাফল পড়তে পারে। PreparedStatement ডায়নামিক কুয়েরি তৈরি করতে সহায়ক, যেখানে Statement সাধারণ কুয়েরি এক্সিকিউশনে ব্যবহৃত হয়। Java JDBC নিরাপত্তা এবং এক্সপেকশন হ্যান্ডলিংসহ ডেটাবেসের সাথে কার্যকরী যোগাযোগ স্থাপন করতে সক্ষম।
Read more