SQL ডাটাবেসের সাথে সংযোগ (MySQL, PostgreSQL)

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

301

Go-তে SQL ডাটাবেসের সাথে সংযোগ (MySQL, PostgreSQL)

Go-তে ডাটাবেসের সাথে সংযোগ স্থাপন এবং ডাটা পরিচালনা করার জন্য আমরা সাধারণত database/sql প্যাকেজ ব্যবহার করি। এছাড়া MySQL এবং PostgreSQL-এর জন্য আলাদা প্যাকেজও প্রয়োজন হয়, যেমন github.com/go-sql-driver/mysql এবং **github.com/lib/pq**। এই প্যাকেজগুলির মাধ্যমে আপনি MySQL এবং PostgreSQL ডাটাবেসের সাথে সংযোগ স্থাপন করতে পারবেন, SQL কোয়েরি চালাতে পারবেন এবং ডাটাবেসে ডেটা INSERT, SELECT, UPDATE, DELETE করতে পারবেন।

এই টিউটোরিয়ালে আমরা দেখব কিভাবে Go তে MySQL এবং PostgreSQL ডাটাবেসের সাথে সংযোগ স্থাপন করতে হয়।


১. MySQL ডাটাবেসের সাথে সংযোগ

১.১ MySQL ড্রাইভার ইনস্টল করা

প্রথমে, MySQL ড্রাইভার ইনস্টল করতে হবে। Go-তে MySQL ড্রাইভার ইনস্টল করার জন্য github.com/go-sql-driver/mysql প্যাকেজ ব্যবহার করা হয়।

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

১.২ MySQL ডাটাবেসের সাথে সংযোগ এবং কোয়েরি চালানো

package main

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

    _ "github.com/go-sql-driver/mysql" // MySQL ড্রাইভার
)

func main() {
    // MySQL ডাটাবেসের সাথে সংযোগ
    dsn := "root:password@tcp(127.0.0.1:3306)/mydb" // এখানে আপনার ইউজার, পাসওয়ার্ড, হোস্ট এবং ডাটাবেস নাম উল্লেখ করুন
    db, err := sql.Open("mysql", dsn)
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // ডাটাবেসে একটি সিম্পল SELECT কোয়েরি চালানো
    rows, err := db.Query("SELECT id, name FROM users")
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()

    // ফলাফল প্রিন্ট করা
    for rows.Next() {
        var id int
        var name string
        if err := rows.Scan(&id, &name); err != nil {
            log.Fatal(err)
        }
        fmt.Println(id, name)
    }

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

এখানে:

  • sql.Open("mysql", dsn): এটি MySQL ডাটাবেসের সাথে সংযোগ স্থাপন করে।
  • db.Query(): SQL কোয়েরি চালানোর জন্য ব্যবহৃত হয়।
  • rows.Scan(): কোয়েরির ফলাফল স্ক্যান করার জন্য ব্যবহৃত হয়।

২. PostgreSQL ডাটাবেসের সাথে সংযোগ

২.১ PostgreSQL ড্রাইভার ইনস্টল করা

PostgreSQL ডাটাবেসের সাথে কাজ করার জন্য github.com/lib/pq প্যাকেজ ব্যবহার করা হয়। এই প্যাকেজটি ইনস্টল করতে:

go get -u github.com/lib/pq

২.২ PostgreSQL ডাটাবেসের সাথে সংযোগ এবং কোয়েরি চালানো

package main

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

    _ "github.com/lib/pq" // PostgreSQL ড্রাইভার
)

func main() {
    // PostgreSQL ডাটাবেসের সাথে সংযোগ
    connStr := "user=postgres password=password dbname=mydb sslmode=disable" // এখানে আপনার ইউজার, পাসওয়ার্ড, ডাটাবেস নাম এবং অন্যান্য সেটিংস উল্লেখ করুন
    db, err := sql.Open("postgres", connStr)
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // ডাটাবেসে একটি সিম্পল SELECT কোয়েরি চালানো
    rows, err := db.Query("SELECT id, name FROM users")
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()

    // ফলাফল প্রিন্ট করা
    for rows.Next() {
        var id int
        var name string
        if err := rows.Scan(&id, &name); err != nil {
            log.Fatal(err)
        }
        fmt.Println(id, name)
    }

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

এখানে:

  • sql.Open("postgres", connStr): এটি PostgreSQL ডাটাবেসের সাথে সংযোগ স্থাপন করে।
  • db.Query(): SQL কোয়েরি চালানোর জন্য ব্যবহৃত হয়।
  • rows.Scan(): কোয়েরির ফলাফল স্ক্যান করার জন্য ব্যবহৃত হয়।

৩. SQL কোয়েরি দিয়ে Data Manipulation (INSERT, UPDATE, DELETE)

৩.১ INSERT Query

package main

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

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

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

    // INSERT কোয়েরি চালানো
    stmt, err := db.Prepare("INSERT INTO users(name) VALUES(?)")
    if err != nil {
        log.Fatal(err)
    }
    res, err := stmt.Exec("John Doe")
    if err != nil {
        log.Fatal(err)
    }

    lastID, err := res.LastInsertId()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Inserted record with ID:", lastID)
}

এখানে:

  • db.Prepare(): এটি একটি SQL স্টেটমেন্ট প্রস্তুত করে যা পরবর্তীতে এক্সিকিউট করা যায়।
  • stmt.Exec(): এটি SQL স্টেটমেন্ট চালিয়ে ডাটা ইনসার্ট করে।

৩.২ UPDATE Query

stmt, err := db.Prepare("UPDATE users SET name=? WHERE id=?")
if err != nil {
    log.Fatal(err)
}
_, err = stmt.Exec("Jane Doe", 1)
if err != nil {
    log.Fatal(err)
}
fmt.Println("Record updated successfully!")

৩.৩ DELETE Query

stmt, err := db.Prepare("DELETE FROM users WHERE id=?")
if err != nil {
    log.Fatal(err)
}
_, err = stmt.Exec(1)
if err != nil {
    log.Fatal(err)
}
fmt.Println("Record deleted successfully!")

৪. Error Handling

Go-তে SQL কোয়েরি চালানোর সময় ত্রুটির ক্ষেত্রে error চেক করা খুব গুরুত্বপূর্ণ। সবসময় ত্রুটি চেক করে পরবর্তী পদক্ষেপ নেওয়া উচিত। এটি log.Fatal(err) বা log.Println(err) ব্যবহার করে করা হয়।


৫. Transaction Management (ট্রানজেকশন ব্যবস্থাপনা)

Go তে ডাটাবেসের সাথে কাজ করার সময় Transaction ব্যবহার করা যেতে পারে। এটি একাধিক SQL স্টেটমেন্টকে একসাথে পরিচালনা করতে সাহায্য করে।

tx, err := db.Begin()
if err != nil {
    log.Fatal(err)
}

_, err = tx.Exec("INSERT INTO users(name) VALUES('Alice')")
if err != nil {
    tx.Rollback()
    log.Fatal(err)
}

err = tx.Commit()
if err != nil {
    log.Fatal(err)
}
fmt.Println("Transaction committed successfully!")

এখানে:

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

সারসংক্ষেপ

  • MySQL ডাটাবেসের সাথে সংযোগ: Go তে MySQL সংযোগের জন্য github.com/go-sql-driver/mysql প্যাকেজ ব্যবহার করা হয়।
  • PostgreSQL ডাটাবেসের সাথে সংযোগ: PostgreSQL সংযোগের জন্য github.com/lib/pq প্যাকেজ ব্যবহার করা হয়।
  • SQL কোয়েরি এবং Data Manipulation: Go তে SQL কোয়েরি যেমন SELECT, INSERT, UPDATE, DELETE চালাতে database/sql প্যাকেজ ব্যবহার করা হয়।
  • Error Handling: SQL স্টেটমেন্ট চালানোর সময়ে ত্রুটি চেক করা উচিত।
  • Transaction Management: একাধিক SQL কোয়েরি একসাথে পরিচালনা করতে ট্রানজেকশন ব্যবহৃত হয়।

Go তে SQL ডাটাবেস সংযোগ খুবই শক্তিশালী এবং সহজ, যা আপনাকে কার্যকরী ডেটাবেস পরিচালনা করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...