Mulai Cepat: Menggunakan bahasa Go untuk menghubungkan dan meminta data di Azure Database for MySQL

BERLAKU UNTUKAzure Database for MySQL - Server Tunggal

Penting

Server tunggal Azure Database for MySQL berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke server fleksibel Azure Database for MySQL. Untuk informasi selengkapnya tentang migrasi ke server fleksibel Azure Database for MySQL, lihat Apa yang terjadi pada Server Tunggal Azure Database for MySQL?

Panduan mulai cepat ini menunjukkan cara menyambungkan ke Azure Database for MySQL dari platform Windows, Ubuntu Linux, dan Apple macOS dengan menggunakan kode yang ditulis dalam bahasa Go. Ini menunjukkan cara menggunakan pernyataan SQL untuk mengkueri, menyisipkan, memperbarui, dan menghapus data dalam database. Topik ini mengasumsikan bahwa Anda sudah memahami pengembangan menggunakan Go dan Anda baru bekerja dengan Azure Database for MySQL.

Prasyarat

Mulai cepat ini menggunakan sumber daya yang dibuat di salah satu panduan ini sebagai titik awal:

Penting

Pastikan aturan firewall server telah ditambahkan ke alamat IP tempat Anda dihubungkan menggunakan portal Microsoft Azure atau Azure CLI

Instal konektor Go dan MySQL

Pasang Go dan go-sql-driver for MySQL di komputer Anda sendiri. Tergantung pada platform Anda, ikuti langkah-langkah di bagian yang sesuai:

  1. Unduh dan pasang Go for Microsoft Windows sesuai dengan petunjuk penginstalan.

  2. Luncurkan perintah dari menu mulai.

  3. Buat folder untuk proyek Anda seperti itu. mkdir %USERPROFILE%\go\src\mysqlgo.

  4. Ubah direktori ke dalam folder proyek, seperti cd %USERPROFILE%\go\src\mysqlgo.

  5. Atur variabel lingkungan untuk GOPATH untuk menunjuk ke direktori kode sumber. set GOPATH=%USERPROFILE%\go.

  6. Pasang go-sql-driver for mysql dengan menjalankan perintah go get github.com/go-sql-driver/mysql.

    Singkatnya, pasang Go, lalu jalankan perintah ini di perintah:

    mkdir  %USERPROFILE%\go\src\mysqlgo
    cd %USERPROFILE%\go\src\mysqlgo
    set GOPATH=%USERPROFILE%\go
    go get github.com/go-sql-driver/mysql
    

Mendapatkan informasi koneksi

Dapatkan informasi koneksi yang diperlukan untuk terhubung ke Azure Database for MySQL. Anda memerlukan nama server dan kredensial untuk masuk yang sepenuhnya memenuhi syarat.

  1. Masuk ke portal Azure.
  2. Pada menu sebelah kiri di portal Microsoft Azure, klik Semua sumber daya, lalu cari server yang telah Anda buat (seperti mydemoserver).
  3. Klik di nama server.
  4. Dari panel server Gambaran Umum, buat catatan Nama server dan Nama untuk masuk admin server. Jika lupa kata sandi, Anda juga dapat mengatur ulang kata sandi dari panel ini. Azure Database for MySQL server name

Bangun dan jalankan kode Go

  1. Untuk menulis kode Golang, Anda dapat menggunakan editor teks sederhana, seperti Notepad di Microsoft Windows, vi atau Nano di Ubuntu, atau TextEdit di macOS. Jika Anda lebih menyukai Lingkungan Pengembangan Interaktif (IDE) yang lebih kaya, coba Gogland oleh Jetbrains, Visual Studio Code oleh Microsoft, atau Atom.
  2. Tempelkan kode Go dari bagian di bawah ini ke dalam file teks, lalu simpan ke folder proyek Anda dengan ekstensi file 8.go (seperti jalur Windows %USERPROFILE%\go\src\mysqlgo\createtable.go atau jalur Linux ~/go/src/mysqlgo/createtable.go).
  3. Temukan konstanta HOST, DATABASE, USER, dan PASSWORD dalam kode, lalu ganti nilai contoh dengan nilai Anda sendiri.
  4. Luncurkan perintah atau Bash shell. Ubah direktori ke folder proyek Anda. Misalnya, di Windows cd %USERPROFILE%\go\src\mysqlgo\. Di Linux cd ~/go/src/mysqlgo/. Beberapa editor IDE yang disebutkan menawarkan kemampuan debug dan runtime tanpa memerlukan perintah shell.
  5. Jalankan kode dengan mengetikkan perintah go run createtable.go untuk mengompilasi aplikasi dan menjalankannya.
  6. Atau, untuk membangun kode menjadi aplikasi asli, go build createtable.go, lalu luncurkan createtable.exe untuk menjalankan aplikasi.

Menyambungkan, membuat tabel, dan menyisipkan data

Gunakan kode berikut untuk menyambung ke server, membuat tabel, dan memuat data menggunakan pernyataan SQL INSERT.

Kode ini mengimpor tiga paket: paket sql, driver go sql for mysql sebagai driver untuk berkomunikasi dengan Azure Database for MySQL, dan paket fmt untuk input dan output cetak pada baris perintah.

Kode ini memanggil metode sql.Open() untuk tersambung ke Azure Database for MySQL, dan memeriksa koneksi dengan menggunakan metode db.Ping(). Handel database digunakan selama proses berlangsung, yang menahan kumpulan koneksi untuk server database. Kode ini memanggil metode Exec() beberapa kali untuk menjalankan beberapa perintah DDL. Kode ini juga menggunakan Prepare() dan Exec() untuk menjalankan pernyataan yang disiapkan dengan parameter berbeda untuk menyisipkan tiga baris. Setiap kali, metode checkError() kustom digunakan untuk memeriksa apakah terjadi kesalahan dan panik untuk keluar.

Ganti konstanta host, database, user, dan password dengan nilai Anda sendiri.

package main

import (
	"database/sql"
	"fmt"

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

const (
	host     = "mydemoserver.mysql.database.azure.com"
	database = "quickstartdb"
	user     = "myadmin@mydemoserver"
	password = "yourpassword"
)

func checkError(err error) {
	if err != nil {
		panic(err)
	}
}

func main() {

	// Initialize connection string.
	var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true", user, password, host, database)

	// Initialize connection object.
	db, err := sql.Open("mysql", connectionString)
	checkError(err)
	defer db.Close()

	err = db.Ping()
	checkError(err)
	fmt.Println("Successfully created connection to database.")

	// Drop previous table of same name if one exists.
	_, err = db.Exec("DROP TABLE IF EXISTS inventory;")
	checkError(err)
	fmt.Println("Finished dropping table (if existed).")

	// Create table.
	_, err = db.Exec("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
	checkError(err)
	fmt.Println("Finished creating table.")

	// Insert some data into table.
	sqlStatement, err := db.Prepare("INSERT INTO inventory (name, quantity) VALUES (?, ?);")
	res, err := sqlStatement.Exec("banana", 150)
	checkError(err)
	rowCount, err := res.RowsAffected()
	fmt.Printf("Inserted %d row(s) of data.\n", rowCount)

	res, err = sqlStatement.Exec("orange", 154)
	checkError(err)
	rowCount, err = res.RowsAffected()
	fmt.Printf("Inserted %d row(s) of data.\n", rowCount)

	res, err = sqlStatement.Exec("apple", 100)
	checkError(err)
	rowCount, err = res.RowsAffected()
	fmt.Printf("Inserted %d row(s) of data.\n", rowCount)
	fmt.Println("Done.")
}

Membaca data

Gunakan kode berikut untuk menyambungkan dan membaca data menggunakan pernyataan SQL SELECT.

Kode ini mengimpor tiga paket: paket sql, driver go sql for mysql sebagai driver untuk berkomunikasi dengan Azure Database for MySQL, dan paket fmt untuk input dan output cetak pada baris perintah.

Kode ini memanggil metode sql.Open() untuk terhubung ke Azure Database for MySQL, dan memeriksa koneksi menggunakan metode db.Ping(). Handel database digunakan selama proses berlangsung, yang menahan kumpulan koneksi untuk server database. Kode ini memanggil metode Query() untuk menjalankan perintah pilih. Kemudian menjalankan Next() untuk melakukan iterasi melalui kumpulan hasil dan Scan() untuk mengurai nilai kolom, menyimpan nilai ke dalam variabel. Setiap kali metode checkError() kustom digunakan untuk memeriksa apakah terjadi kesalahan dan panik untuk keluar.

Ganti konstanta host, database, user, dan password dengan nilai Anda sendiri.

package main

import (
	"database/sql"
	"fmt"

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

const (
	host     = "mydemoserver.mysql.database.azure.com"
	database = "quickstartdb"
	user     = "myadmin@mydemoserver"
	password = "yourpassword"
)

func checkError(err error) {
	if err != nil {
		panic(err)
	}
}

func main() {

	// Initialize connection string.
	var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true", user, password, host, database)

	// Initialize connection object.
	db, err := sql.Open("mysql", connectionString)
	checkError(err)
	defer db.Close()

	err = db.Ping()
	checkError(err)
	fmt.Println("Successfully created connection to database.")

	// Variables for printing column data when scanned.
	var (
		id       int
		name     string
		quantity int
	)

	// Read some data from the table.
	rows, err := db.Query("SELECT id, name, quantity from inventory;")
	checkError(err)
	defer rows.Close()
	fmt.Println("Reading data:")
	for rows.Next() {
		err := rows.Scan(&id, &name, &quantity)
		checkError(err)
		fmt.Printf("Data row = (%d, %s, %d)\n", id, name, quantity)
	}
	err = rows.Err()
	checkError(err)
	fmt.Println("Done.")
}

Memperbarui data

Gunakan kode berikut untuk menyambungkan dan memperbarui data menggunakan pernyataan SQL UPDATE.

Kode ini mengimpor tiga paket: paket sql, driver go sql for mysql sebagai driver untuk berkomunikasi dengan Azure Database for MySQL, dan paket fmt untuk input dan output cetak pada baris perintah.

Kode ini memanggil metode sql.Open() untuk terhubung ke Azure Database for MySQL, dan memeriksa koneksi menggunakan metode db.Ping(). Handel database digunakan selama proses berlangsung, yang menahan kumpulan koneksi untuk server database. Kode ini memanggil metode Exec() untuk menjalankan perintah pembaruan. Setiap kali metode checkError() kustom digunakan untuk memeriksa apakah terjadi kesalahan dan panik untuk keluar.

Ganti konstanta host, database, user, dan password dengan nilai Anda sendiri.

package main

import (
	"database/sql"
	"fmt"

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

const (
	host     = "mydemoserver.mysql.database.azure.com"
	database = "quickstartdb"
	user     = "myadmin@mydemoserver"
	password = "yourpassword"
)

func checkError(err error) {
	if err != nil {
		panic(err)
	}
}

func main() {

	// Initialize connection string.
	var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true", user, password, host, database)

	// Initialize connection object.
	db, err := sql.Open("mysql", connectionString)
	checkError(err)
	defer db.Close()

	err = db.Ping()
	checkError(err)
	fmt.Println("Successfully created connection to database.")

	// Modify some data in table.
	rows, err := db.Exec("UPDATE inventory SET quantity = ? WHERE name = ?", 200, "banana")
	checkError(err)
	rowCount, err := rows.RowsAffected()
	fmt.Printf("Updated %d row(s) of data.\n", rowCount)
	fmt.Println("Done.")
}

Menghapus data

Gunakan kode berikut untuk menghubungkan dan menghapus data menggunakan pernyataan SQL DELETE.

Kode ini mengimpor tiga paket: paket sql, driver go sql for mysql sebagai driver untuk berkomunikasi dengan Azure Database for MySQL, dan paket fmt untuk input dan output cetak pada baris perintah.

Kode ini memanggil metode sql.Open() untuk terhubung ke Azure Database for MySQL, dan memeriksa koneksi menggunakan metode db.Ping(). Handel database digunakan selama proses berlangsung, yang menahan kumpulan koneksi untuk server database. Kode ini memanggil metode Exec() untuk menjalankan perintah hapus. Setiap kali metode checkError() kustom digunakan untuk memeriksa apakah terjadi kesalahan dan panik untuk keluar.

Ganti konstanta host, database, user, dan password dengan nilai Anda sendiri.

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/go-sql-driver/mysql"
)

const (
	host     = "mydemoserver.mysql.database.azure.com"
	database = "quickstartdb"
	user     = "myadmin@mydemoserver"
	password = "yourpassword"
)

func checkError(err error) {
	if err != nil {
		panic(err)
	}
}

func main() {

	// Initialize connection string.
	var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true", user, password, host, database)

	// Initialize connection object.
	db, err := sql.Open("mysql", connectionString)
	checkError(err)
	defer db.Close()

	err = db.Ping()
	checkError(err)
	fmt.Println("Successfully created connection to database.")

	// Modify some data in table.
	rows, err := db.Exec("DELETE FROM inventory WHERE name = ?", "orange")
	checkError(err)
	rowCount, err := rows.RowsAffected()
	fmt.Printf("Deleted %d row(s) of data.\n", rowCount)
	fmt.Println("Done.")
}

Membersihkan sumber daya

Untuk membersihkan semua sumber daya yang digunakan selama mulai cepat ini, hapus grup sumber daya menggunakan perintah berikut:

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes

Langkah berikutnya