Cara melaksanakan fungsi operasi pangkalan data dalam bahasa Go
Bahasa Go, sebagai bahasa pengaturcaraan yang cekap dan ringkas, sangat sesuai untuk membangunkan bahagian belakang pelayan dan operasi pangkalan data. Dalam pembangunan aplikasi sebenar, operasi pangkalan data adalah pautan penting. Hari ini, kami akan memperkenalkan cara untuk melaksanakan fungsi operasi pangkalan data dalam bahasa Go, serta beberapa contoh operasi biasa.
1. Sambungan pangkalan data
Dalam bahasa Go, kami boleh menggunakan perpustakaan pihak ketiga untuk menyambung ke pelbagai jenis pangkalan data. Antaranya, yang paling biasa digunakan ialah pakej "pangkalan data/sql" dalam perpustakaan standard, dan pelbagai pemacu pangkalan data, seperti "go-sqlite3", "mysql" dan "postgres".
Pertama, kita perlu mengimport pakej yang diperlukan:
import ( "database/sql" _ "github.com/go-sql-driver/mysql" // MySQL驱动 )
Kemudian, kita boleh menggunakan fungsi "sql.Open" untuk menyambung ke pangkalan data:
db, err := sql.Open("mysql", "user:password@tcp(localhost:8889)/mydb") if err != nil { log.Fatal(err) } defer db.Close()
Dalam kod di atas, kami menggunakan pemacu MySQL dan menentukan pangkalan data alamat sambungan dan kelayakan. Jika sambungan berjaya, kita boleh melakukan pelbagai operasi pangkalan data melalui objek "db".
2. Laksanakan pernyataan SQL
Secara amnya, operasi pangkalan data terutamanya termasuk fungsi seperti pertanyaan, sisip, kemas kini dan padam. Di bawah ialah beberapa contoh operasi pangkalan data biasa.
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 err := rows.Scan(&id, &name) if err != nil { log.Fatal(err) } fmt.Println(id, name) } err = rows.Err() if err != nil { log.Fatal(err) }
Dalam kod di atas, kami melaksanakan pernyataan SELECT melalui fungsi "db.Query" dan mendapatkan hasil pertanyaan melalui "rows.Next" dan "rows.Scan". Perlu diingatkan bahawa kita perlu menggunakan "defer rows.Close()" untuk memastikan sumber dikeluarkan selepas menggunakan hasil pertanyaan.
stmt, err := db.Prepare("INSERT INTO users(name) VALUES(?)") if err != nil { log.Fatal(err) } defer stmt.Close() res, err := stmt.Exec("John") if err != nil { log.Fatal(err) } id, err := res.LastInsertId() if err != nil { log.Fatal(err) } fmt.Println("Inserted record ID:", id)
Dalam kod di atas, kami menggunakan fungsi "db.Prepare" untuk menyediakan pernyataan INSERT dan "stmt.Exec" untuk melaksanakan operasi sisipan. Kemudian, kita boleh mendapatkan ID yang sepadan dengan rekod yang dimasukkan melalui "res.LastInsertId".
stmt, err := db.Prepare("UPDATE users SET name=? WHERE id=?") if err != nil { log.Fatal(err) } defer stmt.Close() res, err := stmt.Exec("John Smith", 1) if err != nil { log.Fatal(err) } rowsAffected, err := res.RowsAffected() if err != nil { log.Fatal(err) } fmt.Println("Rows affected:", rowsAffected)
Dalam kod di atas, kami menyediakan kenyataan KEMASKINI melalui fungsi "db.Prepare" dan menggunakan "stmt.Exec" untuk melaksanakan operasi kemas kini. Kami kemudiannya boleh mendapatkan bilangan baris yang terjejas melalui "res.RowsAffected".
stmt, err := db.Prepare("DELETE FROM users WHERE id=?") if err != nil { log.Fatal(err) } defer stmt.Close() res, err := stmt.Exec(1) if err != nil { log.Fatal(err) } rowsAffected, err := res.RowsAffected() if err != nil { log.Fatal(err) } fmt.Println("Rows affected:", rowsAffected)
Dalam kod di atas, kami menyediakan kenyataan DELETE melalui fungsi "db.Prepare" dan menggunakan "stmt.Exec" untuk melaksanakan operasi padam. Begitu juga, kita boleh mendapatkan bilangan baris yang terjejas melalui "res.RowsAffected".
3. Pemprosesan transaksi
Dalam pembangunan aplikasi sebenar, pemprosesan transaksi adalah fungsi yang sangat penting. Dalam bahasa Go, kita boleh menggunakan "db.Begin" untuk memulakan transaksi dan "tx.Commit" untuk melakukan transaksi. Jika ralat berlaku semasa pemprosesan transaksi, kami boleh menggunakan "tx.Rollback" untuk melancarkan transaksi.
tx, err := db.Begin() if err != nil { log.Fatal(err) } stmt, err := tx.Prepare("INSERT INTO users(name) VALUES(?)") if err != nil { tx.Rollback() log.Fatal(err) } defer stmt.Close() _, err = stmt.Exec("John") if err != nil { tx.Rollback() log.Fatal(err) } err = tx.Commit() if err != nil { log.Fatal(err) }
Dalam kod di atas, kami menggunakan "db.Begin" untuk memulakan transaksi dan melakukan operasi sisipan dalam transaksi. Jika ralat berlaku, kami menggunakan "tx.Rollback" untuk melancarkan transaksi jika tidak, kami menggunakan "tx.Commit" untuk melakukan transaksi.
Ringkasan:
Melalui pengenalan artikel ini, kami telah mempelajari cara melaksanakan fungsi operasi pangkalan data dalam bahasa Go dan menunjukkan beberapa contoh operasi pangkalan data biasa. Perlu dinyatakan bahawa pelbagai jenis pangkalan data boleh disambungkan dengan mudah menggunakan pakej "pangkalan data/sql" dan pemacu pangkalan data yang sesuai. Saya harap artikel ini akan membantu anda melaksanakan operasi pangkalan data dalam bahasa Go!
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi operasi pangkalan data dalam bahasa go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!