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筆記
- 五、Elasticsearch快速入門案例(1)-CRUDElasticsearch
- NodeJS的DDD與CRUD對比案例 - Khalil StemmlerNodeJS
- 使用go在mongodb中進行CRUD操作MongoDB
- go 語言運算元據庫 CRUDGo
- 使用Go語言建立簡單的CRUD增刪改查Go
- Python中CRUD增刪改查教程Python
- 教程:如何在.NET中使用MongoDB以及基本的CRUD操作MongoDB
- go-zero微服務實戰系列(四、CRUD熱身)Go微服務
- Go 1.5的併發特性與案例Go
- go-zero微服務實戰系列(四、CRUD熱熱身)Go微服務
- Spring Data JPA + QueryDSL實現CRUD和複雜查詢案例Spring
- GO 中 ETCD 的編碼案例分享Go
- PasteForm最佳CRUD實踐,實際案例PasteTemplate詳解之管理前端的程式碼(二)ASTORM前端
- 簡單的 Go 入門教程Go
- MySQL案例08:MySQL Scheduler Events帶來的風險MySql
- go泛型教程Go泛型
- mybatis CRUDMyBatis
- MySQL:一個奇怪的hang案例MySql
- 【MySQL】使用event 的具體 案例MySql
- MySQL的leftjoin、rightjoin、innerjoin的案例MySql
- 比CRUD多一點兒(一):MySQL常用命令MySql
- 清華尹成帶你實戰GO案例(56)Go通道的同步功能Go
- mysql運維案例MySql運維
- MySQL案例-replication"卡死"MySql
- 分享生成go的mysql orm工具GoMySqlORM
- 清華尹成帶你實戰GO案例(22)Go常量Go
- 清華尹成帶你實戰GO案例(28)Go 方法Go
- 清華尹成帶你實戰GO案例(35)Go 互斥Go
- 清華尹成帶你實戰GO案例(38)Go 介面Go
- 清華尹成帶你實戰GO案例(46)Go 排序Go排序
- 清華尹成帶你實戰GO案例(47)Go 切片Go
- 清華尹成帶你實戰GO案例(2) Go 字典Go
- 清華尹成帶你實戰GO案例(7)Go DeferGo
- 清華尹成帶你實戰GO案例(7)Go ExitGo
- 清華尹成帶你實戰GO案例(12)Go PanicGo
- Mysql的安裝教程MySql