Go + MySQL的CRUD案例教程
在本教程中,我們將透過示例學習如何在 Golang 中建立、讀取、更新和刪除 MySQL 資料庫中的記錄。
先決條件
- 安裝 MySQL 伺服器
- 安裝Go
- 安裝 MySQL 工作臺
所需的包
要連線到 MySQL,我們需要一個驅動程式。這是我們將要使用的驅動程式。
要將其安裝到 GOPATH 中,我們只需執行以下命令:
create database demo
建立資料庫後,使用下面的 SQL 指令碼在資料庫中建立一個Students表:
CREATE TABLE `students` ( `id` bigint NOT NULL AUTO_INCREMENT, `email` varchar(255) DEFAULT NULL, `first_name` varchar(255) DEFAULT NULL, `last_name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) |
Golang - MySQL 插入資料庫
在本例中,我們將在學生 表中插入一條記錄 。
讓我們建立一個名為“insert_db.go”的檔案,並在其中新增以下內容:
package main import ( "database/sql" "fmt" "log" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/demo") defer db.Close() if err != nil { log.Fatal(err) } sql := "INSERT INTO students(email, first_name, last_name) VALUES ('admin@gmail.com', 'admin','admin')" res, err := db.Exec(sql) if err != nil { panic(err.Error()) } lastId, err := res.LastInsertId() if err != nil { log.Fatal(err) } fmt.Printf("The last inserted row id: %d\n", lastId) } |
輸出:
G:\GoLang\examples>go run insert_db.go
執行上面的 Go 示例後,插入了一條學生記錄,您可以使用上面的示例透過更改插入 SQL 查詢中的學生詳細資訊來插入任意數量的記錄。
檢索資料:
package main import ( "database/sql" "fmt" "log" _ "github.com/go-sql-driver/mysql" ) type Student struct { Id int Email string First_Name string Last_Name string } func main() { db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/demo") defer db.Close() if err != nil { log.Fatal(err) } res, err := db.Query("SELECT * FROM students") defer res.Close() if err != nil { log.Fatal(err) } for res.Next() { var student Student err := res.Scan(&student.Id, &student.Email, &student.First_Name, &student.Last_Name) if err != nil { log.Fatal(err) } fmt.Printf("%v\n", student) } } |
更新我們在學生 表的第一個例子中插入的第一條記錄
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) type Student struct { Id int Email string First_Name string Last_Name string } func main() { db, e := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/demo") ErrorCheck(e) // close database after all work is done defer db.Close() PingDB(db) //Update db stmt, e := db.Prepare("update students set First_Name=? where id=?") ErrorCheck(e) // execute res, e := stmt.Exec("Ramesh", "1") ErrorCheck(e) a, e := res.RowsAffected() ErrorCheck(e) fmt.Println(a) } func ErrorCheck(err error) { if err != nil { panic(err.Error()) } } func PingDB(db *sql.DB) { err := db.Ping() ErrorCheck(err) } |
刪除學生 表中的第一條記錄 :
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) type Student struct { Id int Email string First_Name string Last_Name string } func main() { db, e := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/demo") ErrorCheck(e) // close database after all work is done defer db.Close() PingDB(db) // delete data stmt, e := db.Prepare("delete from students where id=?") ErrorCheck(e) // delete 1st student res, e := stmt.Exec("1") ErrorCheck(e) // affected rows a, e := res.RowsAffected() ErrorCheck(e) fmt.Println(a) // 1 } func ErrorCheck(err error) { if err != nil { panic(err.Error()) } } func PingDB(db *sql.DB) { err := db.Ping() ErrorCheck(err) } |
相關文章
- go操作mongo CRUDGo
- mysql CRUD筆記MySql筆記
- NodeJS的DDD與CRUD對比案例 - Khalil StemmlerNodeJS
- 使用go在mongodb中進行CRUD操作MongoDB
- Python中CRUD增刪改查教程Python
- 教程:如何在.NET中使用MongoDB以及基本的CRUD操作MongoDB
- go-zero微服務實戰系列(四、CRUD熱身)Go微服務
- Spring Data JPA + QueryDSL實現CRUD和複雜查詢案例Spring
- GO 中 ETCD 的編碼案例分享Go
- go-zero微服務實戰系列(四、CRUD熱熱身)Go微服務
- MySQL:一個奇怪的hang案例MySql
- mysql運維案例MySql運維
- PasteForm最佳CRUD實踐,實際案例PasteTemplate詳解之管理前端的程式碼(二)ASTORM前端
- MySQL案例08:MySQL Scheduler Events帶來的風險MySql
- Mysql的安裝教程MySql
- PasteForm最佳CRUD實踐,實際案例PasteTemplate詳解之3000問(四)ASTORM
- PasteForm最佳CRUD實踐,實際案例PasteTemplate詳解之3000問(三)ASTORM
- 簡單的 Go 入門教程Go
- 分享生成go的mysql orm工具GoMySqlORM
- MySQL教程MySql
- MySQL 教程MySql
- Nestjs最佳實踐教程(八): CRUD抽象化框架構建JS抽象框架架構
- go泛型教程Go泛型
- mysql 資料表的複製案例MySql
- 【MySQL】NOT EXISTS優化的一個案例MySql優化
- MySQL資料庫5:Go與MySQL的互動MySql資料庫Go
- GO 連線 MySQLGoMySql
- Linux awk使用案例教程Linux
- MySQL經典案例分析MySql
- Mysql之案例分析(一)MySql
- Go-Testing golang 測試案例Golang
- MyBatis 的簡單 CRUD 操作MyBatis
- SpringBoot實現mongoDB的CRUDSpring BootMongoDB
- 清華尹成帶你實戰GO案例(56)Go通道的同步功能Go
- MySql escape的使用案例詳解獗鰳MySql
- mysql活躍連線打高的案例MySql
- V2.0 釋出 Go-sword 快速生成視覺化 CRUD後臺Go視覺化
- 18 . Go之操作MysqlGoMySql