Golang ialah bahasa pengaturcaraan yang cekap, pantas dan berkuasa yang boleh digunakan untuk membina pelbagai aplikasi, terutamanya yang cemerlang dalam pembangunan web. Apabila digunakan bersama dengan pangkalan data, Golang menyediakan beberapa alat yang berkuasa untuk membantu pembangun memanipulasi pangkalan data. Dalam artikel ini, kami akan menumpukan pada cara Golang melaksanakan pertanyaan pangkalan data.
1. Pertanyaan pangkalan data Golang
Terdapat dua cara utama untuk menanyakan pangkalan data di Golang: satu adalah menggunakan pakej pangkalan data/sql yang disediakan dalam perpustakaan standard, dan satu lagi adalah menggunakan rangka kerja ORM Contohnya, GORM, XORM, dsb. Di sini kami akan memperkenalkan cara menggunakan pakej pangkalan data/sql untuk membuat pertanyaan.
pangkalan data/sql ialah pakej dalam pustaka standard Golang untuk mengendalikan pangkalan data hubungan Gunakannya untuk menyambung ke pangkalan data dan menyelesaikan operasi seperti mengimport, memasukkan, mengemas kini dan memadam. Sebelum menggunakan pangkalan data/sql, anda perlu memasang pemacu pangkalan data yang sepadan. Sebagai contoh, jika anda ingin menyambung ke MySQL, anda perlu memasang pemacu MySQL. Pemacu pangkalan data yang biasa digunakan di Golang termasuk: mysql, sqlite, postgres, dll.
2. Golang menyambung ke pangkalan data
Sebelum menggunakan pangkalan data/sql untuk menanyakan pangkalan data, kita mesti menyambung ke pangkalan data terlebih dahulu. Berikut ialah contoh kod untuk menyambung ke pangkalan data MySQL:
import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database_name?charset=utf8") if err != nil { panic(err.Error()) } defer db.Close() }
Antaranya, fungsi sql.Open() mengembalikan objek pangkalan data db, yang boleh kita gunakan untuk mengendalikan pangkalan data. Perkara lain yang perlu diambil perhatian ialah selepas operasi pangkalan data selesai, pangkalan data perlu ditutup melalui kata kunci tangguh.
3. Data pertanyaan Golang
Selepas berjaya menyambung ke pangkalan data, kami boleh melaksanakan pernyataan SQL melalui objek db untuk menanyakan data. Berikut ialah kod sampel untuk menanyakan sekeping data:
import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) type User struct { Id int Name string Age int } func main() { db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database_name?charset=utf8") if err != nil { panic(err.Error()) } defer db.Close() var ( id int name string age int ) err = db.QueryRow("SELECT id, name, age FROM users WHERE id = ?", 1).Scan(&id, &name, &age) switch { case err == sql.ErrNoRows: fmt.Println("没有这条记录!") case err != nil: panic(err.Error()) default: user := User{Id:id, Name:name, Age:age} fmt.Println(user) } }
Dalam kod sampel ini, kami mentakrifkan struktur pengguna Pengguna dan menanyakan data dengan id 1 dalam pangkalan data melalui kaedah QueryRow(). Kaedah QueryRow() melaksanakan pertanyaan dan mengimbas keputusannya ke dalam baris data. Di sini, kami menggunakan kaedah Scan() untuk memetakan hasil pertanyaan pangkalan data kepada struktur data Pengguna yang kami takrifkan, dan akhirnya mengeluarkan data.
Begitu juga, kami juga boleh menanyakan berbilang baris data. Berikut ialah kod sampel untuk menanyakan berbilang baris data:
import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) type User struct { Id int Name string Age int } func main() { db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database_name?charset=utf8") if err != nil { panic(err.Error()) } defer db.Close() rows, err := db.Query("SELECT id, name, age FROM users") if err != nil { panic(err.Error()) } defer rows.Close() var users []User for rows.Next() { var user User err := rows.Scan(&user.Id, &user.Name, &user.Age) if err != nil { panic(err.Error()) } users = append(users, user) } fmt.Println(users) }
Dalam kod sampel ini, kami menggunakan kaedah Query() untuk menanyakan jadual pengguna dalam pangkalan data dan mengimbas seluruh gelung for dan Kaedah seterusnya() Hasil pertanyaan. Dalam badan gelung, kami mentakrifkan struktur Pengguna dan memetakan hasil pertanyaan pangkalan data kepada struktur melalui kaedah Scan(). Akhir sekali, kami menyimpan hasilnya ke dalam kepingan dan mengeluarkan kepingan itu.
4. Ringkasan
Melalui contoh kod di atas, kita dapat melihat bahawa ia adalah sangat mudah dan cekap untuk menggunakan pakej pangkalan data/sql untuk pertanyaan pangkalan data di Golang. Kami boleh mengendalikan pangkalan data secara fleksibel dan mengendalikan pelbagai keperluan pertanyaan data. Berdasarkan ini, Golang menunjukkan prestasi yang sangat baik dalam pembangunan web. Sudah tentu, untuk mendapatkan pengalaman yang lebih baik, kami juga boleh memilih untuk menggunakan rangka kerja ORM untuk mengendalikan pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pertanyaan pangkalan data di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!