Untuk menggunakan pemacu MySQL, kami perlu memasangnya ke dalam projek Go kami melalui arahan berikut:
go get github.com/go-sql-driver/mysql
Setelah pemasangan selesai, kami perlu mengimportnya ke dalam projek Golang:
import "github.com/go-sql-driver/mysql"
Seterusnya, kita perlu mewujudkan sambungan ke pangkalan data MySQL. Berikut ialah contoh kod yang akan menyambung ke pangkalan data bernama "mydatabase":
db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/mydatabase") if err != nil { log.Fatal(err) } defer db.Close()
Ambil perhatian bahawa dalam rentetan sambungan, kami menentukan port pelayan MySQL, iaitu 3306 secara lalai.
Selepas kami berjaya mewujudkan sambungan dengan pangkalan data MySQL, kami boleh memulakan pertanyaan data. Di bawah ialah contoh mudah yang mendapatkan semula rekod semua pengguna dalam jadual bernama "pengguna"
rows, err := db.Query("SELECT * FROM users") if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { var id int var name string var email string err = rows.Scan(&id, &name, &email) if err != nil { log.Fatal(err) } fmt.Println(id, name, email) } err = rows.Err() if err != nil { log.Fatal(err) }
Kami menggunakan fungsi db.Query untuk melaksanakan pertanyaan SQL, seperti yang ditunjukkan dalam contoh di atas. Fungsi ini akan mengembalikan objek Rows yang mengandungi semua baris hasil pertanyaan.
Seterusnya, kami menggunakan gelung for untuk melintasi semua baris dan menggunakan baris. Fungsi imbasan untuk membaca nilai lajur baris demi baris. Akhir sekali, kami menyemak ralat dalam sebarang hasil pertanyaan.
Sudah tentu, kami juga boleh menggunakan pertanyaan berparameter untuk menanya data dengan lebih selamat. Pertanyaan berparameter menghalang serangan suntikan SQL. Berikut ialah coretan kod sampel yang menggunakan pertanyaan berparameter untuk mendapatkan semula rekod pengguna bernama "john":
rows, err := db.Query("SELECT * FROM users WHERE name = ?", "john") if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { var id int var name string var email string err = rows.Scan(&id, &name, &email) if err != nil { log.Fatal(err) } fmt.Println(id, name, email) } err = rows.Err() if err != nil { log.Fatal(err) }
Dalam contoh di atas, kami telah menggunakan pemegang tempat dalam rentetan pertanyaan dan menambah Parameter bagi Fungsi pertanyaan menghantar nilai yang anda mahu padankan.
Atas ialah kandungan terperinci Bagaimana untuk menanyakan data mysql dalam bahasa go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!