Database CRUD Operations

Database Integration (ডেটাবেস ইন্টিগ্রেশন) - গো প্রোগ্রামিং (Go Programming) - Computer Programming

353

Go-তে Database CRUD Operations (ক্রুড অপারেশনস)

CRUD এর পূর্ণরূপ হচ্ছে Create, Read, Update, Delete, যা ডেটাবেসের সাধারণ অপারেশনসমূহ। Go তে database অপারেশন করতে আমরা বিভিন্ন লাইব্রেরি ব্যবহার করতে পারি, তবে সবচেয়ে সাধারণ লাইব্রেরি হল database/sql প্যাকেজ। এটি Go-তে ডেটাবেস অপারেশন করার জন্য একটি বেসিক ইন্টারফেস প্রদান করে, এবং আপনি এর সাথে বিভিন্ন ড্রাইভার (যেমন PostgreSQL, MySQL, SQLite) ব্যবহার করতে পারেন।

এখানে, আমরা MySQL ডেটাবেসের সাথে CRUD অপারেশন দেখাবো। আপনি যদি অন্য কোন ডেটাবেস (যেমন PostgreSQL) ব্যবহার করেন, তাহলে শুধুমাত্র ড্রাইভার পরিবর্তন করতে হবে।


১. Go তে MySQL ডেটাবেস সংযোগ করা

প্রথমে, আপনাকে github.com/go-sql-driver/mysql ড্রাইভার ইনস্টল করতে হবে:

go get -u github.com/go-sql-driver/mysql

এটা ডেটাবেসের সাথে যোগাযোগের জন্য MySQL ড্রাইভার হিসেবে কাজ করবে।


২. Create Operation (ডেটা তৈরি করা)

CREATE অপারেশন দিয়ে নতুন ডেটা ডেটাবেসে যুক্ত করা হয়।

২.১ Create Operation Example

package main

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // MySQL ডেটাবেসে সংযোগ
    db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/testdb")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // ডেটা INSERT করা
    query := "INSERT INTO users (name, age) VALUES (?, ?)"
    _, err = db.Exec(query, "John Doe", 30)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Data inserted successfully!")
}

এখানে:

  • sql.Open: ডেটাবেসে সংযোগ তৈরি করা হয়।
  • db.Exec: INSERT INTO কোয়েরি দিয়ে ডেটাবেসে ডেটা যুক্ত করা হয়।

৩. Read Operation (ডেটা পড়া)

SELECT অপারেশন দিয়ে ডেটাবেস থেকে ডেটা পড়া হয়।

৩.১ Read Operation Example

package main

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // MySQL ডেটাবেসে সংযোগ
    db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/testdb")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // ডেটা SELECT করা
    query := "SELECT id, name, age FROM users"
    rows, err := db.Query(query)
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()

    // রিটার্ন করা ডেটা প্রিন্ট করা
    for rows.Next() {
        var id int
        var name string
        var age int
        err := rows.Scan(&id, &name, &age)
        if err != nil {
            log.Fatal(err)
        }
        fmt.Printf("%d: %s, %d\n", id, name, age)
    }

    // কোনো ত্রুটি হলে চেক করা
    if err := rows.Err(); err != nil {
        log.Fatal(err)
    }
}

এখানে:

  • db.Query: ডেটাবেস থেকে ডেটা নির্বাচন (SELECT) করে।
  • rows.Scan: প্রতিটি রেকর্ডের মান স্ক্যান করে এবং ভেরিয়েবলগুলিতে রাখে।

৪. Update Operation (ডেটা আপডেট করা)

UPDATE অপারেশন দিয়ে ডেটাবেসে থাকা ডেটার মান পরিবর্তন করা হয়।

৪.১ Update Operation Example

package main

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // MySQL ডেটাবেসে সংযোগ
    db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/testdb")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // ডেটা আপডেট করা
    query := "UPDATE users SET age = ? WHERE name = ?"
    _, err = db.Exec(query, 35, "John Doe")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Data updated successfully!")
}

এখানে:

  • db.Exec: UPDATE কোয়েরি দিয়ে ডেটা আপডেট করা হয়েছে।

৫. Delete Operation (ডেটা মুছে ফেলা)

DELETE অপারেশন দিয়ে ডেটাবেস থেকে ডেটা মুছে ফেলা হয়।

৫.১ Delete Operation Example

package main

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // MySQL ডেটাবেসে সংযোগ
    db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/testdb")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // ডেটা ডিলিট করা
    query := "DELETE FROM users WHERE name = ?"
    _, err = db.Exec(query, "John Doe")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Data deleted successfully!")
}

এখানে:

  • db.Exec: DELETE কোয়েরি দিয়ে ডেটা মুছে ফেলা হয়েছে।

৬. Transaction Management (ট্রানজেকশন ম্যানেজমেন্ট)

ডেটাবেসে একাধিক অপারেশন একসাথে একটি ইউনিট হিসেবে সম্পন্ন করার জন্য Transaction ব্যবহার করা হয়। এটি আপনাকে যদি একটি অপারেশন ব্যর্থ হয়, তাহলে পুরো ট্রানজেকশনটি ফিরিয়ে আনতে সহায়তা করে (rollback)।

৬.১ Transaction Example

package main

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // MySQL ডেটাবেসে সংযোগ
    db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/testdb")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // Transaction শুরু
    tx, err := db.Begin()
    if err != nil {
        log.Fatal(err)
    }

    // প্রথম অপারেশন (insert)
    _, err = tx.Exec("INSERT INTO users (name, age) VALUES (?, ?)", "Alice", 28)
    if err != nil {
        tx.Rollback() // কোনো সমস্যা হলে rollback
        log.Fatal(err)
    }

    // দ্বিতীয় অপারেশন (insert)
    _, err = tx.Exec("INSERT INTO users (name, age) VALUES (?, ?)", "Bob", 30)
    if err != nil {
        tx.Rollback() // কোনো সমস্যা হলে rollback
        log.Fatal(err)
    }

    // যদি সবকিছু ঠিক থাকে, তাহলে commit
    err = tx.Commit()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Transaction completed successfully!")
}

এখানে:

  • db.Begin(): ট্রানজেকশন শুরু করা।
  • tx.Rollback(): যদি কোনো অপারেশন ব্যর্থ হয়, তাহলে সবকিছু ফিরে আনা।
  • tx.Commit(): সব অপারেশন সফল হলে ট্রানজেকশন কমিট করা।

সারসংক্ষেপ

  • Create: ডেটাবেসে নতুন ডেটা যোগ করা (INSERT কোয়েরি ব্যবহার করে)।
  • Read: ডেটাবেস থেকে ডেটা পড়া (SELECT কোয়েরি ব্যবহার করে)।
  • Update: ডেটাবেসে বিদ্যমান ডেটা আপডেট করা (UPDATE কোয়েরি ব্যবহার করে)।
  • Delete: ডেটাবেস থেকে ডেটা মুছে ফেলা (DELETE কোয়েরি ব্যবহার করে)।
  • Transaction: একাধিক অপারেশন একসাথে পরিচালনা করা এবং ব্যর্থ হলে সবকিছু ফিরিয়ে আনা (BEGIN, COMMIT, ROLLBACK ব্যবহার করে)।

Go-তে database CRUD operations খুবই শক্তিশালী এবং আপনি সহজেই ডেটাবেসের সাথে কাজ করতে পারবেন database/sql প্যাকেজের মাধ্যমে।

Content added By
Promotion

Are you sure to start over?

Loading...