background icons
background icons 2
Cara Menghubungkan Golang dengan MySQL: Pandungan Pemula
Fitri Hy Fitri Hy
Tutorial 30-09-2024

Cara Menghubungkan Golang dengan MySQL: Pandungan Pemula

Menghubungkan Golang (Go) dengan database MySQL adalah langkah penting dalam pengembangan aplikasi yang memerlukan penyimpanan data secara persisten. Pada artikel ini, kita akan membahas cara menghubungkan aplikasi Go dengan MySQL menggunakan driver database Go dan melakukan beberapa operasi dasar seperti koneksi, query, dan manipulasi data.
Prasyarat

Sebelum memulai, pastikan Anda telah menginstal:

  • Go - Jika belum, Anda dapat mengunduhnya di sini.
  • MySQL - Anda dapat menginstalnya melalui MySQL Community Server.
  • Driver MySQL untuk Go - Driver ini dapat diinstal dengan go get.

Langkah 1: Instalasi MySQL Driver untuk Go

Go memiliki beberapa driver untuk menghubungkan ke MySQL, namun yang paling populer adalah go-sql-driver/mysql. Anda dapat menginstalnya menggunakan perintah berikut:

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

Driver ini memungkinkan aplikasi Go untuk berinteraksi dengan database MySQL melalui API standar database/sql Go.

Langkah 2: Mengatur Koneksi ke Database MySQL

Setelah menginstal driver, Anda dapat mulai membuat program Go untuk terhubung ke MySQL. Berikut adalah contoh dasar bagaimana melakukan koneksi ke MySQL.

  • Buat Database di MySQL: Buka terminal MySQL dan buat database baru:
CREATE DATABASE go_mysql_example;
USE go_mysql_example;
  • Koneksi MySQL di Go: Berikut adalah kode Go untuk menghubungkan ke database MySQL
package main

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

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

func main() {
    // Konfigurasi koneksi MySQL
    dsn := "root:password@tcp(127.0.0.1:3306)/go_mysql_example"

    // Membuka koneksi ke database
    db, err := sql.Open("mysql", dsn)
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // Memastikan koneksi berhasil
    err = db.Ping()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Berhasil terhubung ke MySQL!")
}

Penjelasan:

  • sql.Open: Membuka koneksi ke database. Ini menggunakan driver MySQL (mysql) yang telah diinstal.
  • dsn: Data Source Name, formatnya adalah username:password@tcp(host:port)/dbname. Dalam contoh ini, kita menggunakan root sebagai user dan password sebagai password.
  • db.Ping(): Memastikan bahwa koneksi berhasil dilakukan dengan melakukan ping ke server MySQL.

Langkah 3: Membuat Tabel di MySQL

Sebelum kita menyimpan data, kita perlu membuat tabel di database MySQL. Buka MySQL dan buat tabel baru bernama users:

CREATE TABLE users (
    id INT AUTO_INCREMENT,
    name VARCHAR(100),
    email VARCHAR(100),
    PRIMARY KEY (id)
);

Langkah 4: Menambahkan Data ke Database

Berikut adalah contoh kode untuk memasukkan data ke tabel users di MySQL:

package main

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

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

func main() {
    dsn := "root:password@tcp(127.0.0.1:3306)/go_mysql_example"
    db, err := sql.Open("mysql", dsn)
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // Memastikan koneksi berhasil
    err = db.Ping()
    if err != nil {
        log.Fatal(err)
    }

    // Menambahkan data ke tabel users
    insertQuery := "INSERT INTO users(name, email) VALUES(?, ?)"
    result, err := db.Exec(insertQuery, "John Doe", "john@example.com")
    if err != nil {
        log.Fatal(err)
    }

    lastInsertID, err := result.LastInsertId()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Data berhasil ditambahkan dengan ID: %d
", lastInsertID)
}

Penjelasan:

  • db.Exec: Digunakan untuk mengeksekusi perintah SQL, seperti INSERT untuk menambahkan data.
  • ?: Placeholder untuk parameter yang akan digantikan oleh nilai variabel.
  • result.LastInsertId(): Mendapatkan ID dari data terakhir yang dimasukkan.

Langkah 5: Membaca Data dari Database

Untuk membaca data dari tabel users, Anda bisa menggunakan query SELECT seperti pada contoh berikut:

package main

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

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

func main() {
    dsn := "root:password@tcp(127.0.0.1:3306)/go_mysql_example"
    db, err := sql.Open("mysql", dsn)
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // Query untuk membaca data dari tabel users
    rows, err := db.Query("SELECT id, name, email FROM users")
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()

    fmt.Println("Data Users:")
    for rows.Next() {
        var id int
        var name, email string
        err := rows.Scan(&id, &name, &email)
        if err != nil {
            log.Fatal(err)
        }
        fmt.Printf("ID: %d, Name: %s, Email: %s
", id, name, email)
    }

    if err = rows.Err(); err != nil {
        log.Fatal(err)
    }
}

Penjelasan:

  • db.Query: Digunakan untuk menjalankan perintah SELECT.
  • rows.Next(): Menelusuri setiap baris hasil query.
  • rows.Scan(): Menyimpan data dari setiap kolom ke variabel.

Langkah 6: Mengupdate dan Menghapus Data

Mengupdate Data

Berikut adalah contoh kode untuk mengupdate data di MySQL:

updateQuery := "UPDATE users SET name = ? WHERE id = ?"
_, err := db.Exec(updateQuery, "Jane Doe", 1)
if err != nil {
    log.Fatal(err)
}
fmt.Println("Data berhasil diupdate")

Menghapus Data

Berikut adalah contoh untuk menghapus data dari tabel users:

deleteQuery := "DELETE FROM users WHERE id = ?"
_, err := db.Exec(deleteQuery, 1)
if err != nil {
    log.Fatal(err)
}
fmt.Println("Data berhasil dihapus")

Kesimpulan

Menghubungkan Golang dengan MySQL sangat mudah dengan menggunakan go-sql-driver/mysql. Anda bisa melakukan operasi dasar seperti menambahkan, membaca, mengupdate, dan menghapus data dari database MySQL langsung dari aplikasi Go Anda. Artikel ini memberikan fondasi dasar untuk mulai bekerja dengan Go dan MySQL.

Langkah selanjutnya adalah memperdalam pemahaman tentang penggunaan transaksi, prepared statements, dan optimisasi koneksi database dalam aplikasi yang lebih kompleks.