javaertogo之mysql操作
經過度娘後,發現比較常用golang mysql驅動包有兩種mymysql和go-sql-driver/mysql。個人覺得mymysql這個名字起得不夠文雅。所以我選擇了go-sql-driver/mysql。
1、go-sql-driver/mysql的安裝
因為go-sql-driver/mysql屬於第三方的包,所以我們需要先獲取到這個包。
通過系統的shell工具(命令列),把安裝包加到我們的$GOPATH。
go get github.com/go-sql-driver/mysql
這裡要注意的是:使用上面的命令不單要配置好Golang的環境,還需要把git的bin目錄配置到Path環境變數中。
2、操作mysql
- 導包
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
因為我們使用過程中,並沒有直接使用到go-sql-driver/mysql,而是通過database/sql中的介面來使用驅動,這點和java的思想是一樣的。所以我們在匯入go-sql-driver/mysql包的時候,通過下劃線作為佔位符,告訴golang不會直接使用此包的內容。
注:
如果你匯入了一個包卻沒有使用它,則會在構建程式時引發錯誤,如 imported and not used: os,這正是遵循了 Go 的格言:“沒有不必要的程式碼!“。
變數的宣告也一樣,你如果宣告瞭一個變數,卻沒有使用這個變數,也會引發錯誤。
佔位符的存在,解決了你既要匯入這個包,但又不會顯式使用包的問題。
- 建立連線
db, err := sql.Open("mysql", "使用者名稱:密碼@/資料庫名?charset=utf8")
Open函式會返回兩個值,但我們如果只需要db值,而不考慮error的話,可以使用佔位符:
db, _:= sql.Open("mysql", "使用者名稱:密碼@/資料庫名?charset=utf8")
- Exec
_, err := db.Exec(sql)
Exec函式可以執行一條無返回的sql,如delete、update、insert操作。
- Prepare
預處理折方式處理sql
如:
增加:
stmt, err := db.Prepare(`INSERT user (user_name,user_age,user_sex) values (?,?,?)`)
checkErr(err)
res, err := stmt.Exec("tony", 20, 1)
checkErr(err)
id, err := res.LastInsertId()
checkErr(err)
修改:
stmt, err := db.Prepare(`UPDATE user SET user_age=?,user_sex=? WHERE user_id=?`)
checkErr(err)
res, err := stmt.Exec(21, 2, 1)
checkErr(err)
num, err := res.RowsAffected()
checkErr(err)
刪除:
stmt, err := db.Prepare(`DELETE FROM user WHERE user_id=?`)
checkErr(err)
res, err := stmt.Exec(1)
checkErr(err)
num, err := res.RowsAffected()
checkErr(err)
- Query
查詢返回多條記錄。
rows, err := db.Query("select id,nickname from user")
if err != nil {
fmt.Println(err.Error())
}
defer rows.Close()
for rows.Next() {
var id int
var nickname string
rows.Scan(&id, &nickname)
fmt.Println(nickname)
}
db.Close()
- QueryRow
查詢返回一條記錄。
row := Open().QueryRow("select id,nickname from user where id=129986")
var id int
var nickname string
row.Scan(&id, &nickname)
相關文章
- 18 . Go之操作MysqlGoMySql
- TarsCpp 元件之 MySQL 操作元件MySql
- 操作MySQL之sqlx庫MySql
- Go 語言操作 MySQL 之 CURD 操作GoMySql
- Go 語言操作 MySQL 之 事務操作GoMySql
- MySQL之json資料操作MySqlJSON
- MySql資料分割槽操作之新增分割槽操作MySql
- Go 語言操作 MySQL 之 SQLX 包GoMySql
- Python之 操作 MySQL 資料庫PythonMySql資料庫
- Go 語言操作 MySQL 之 預處理GoMySql
- jmeter學習指南之操作 mysql 資料庫JMeterMySql資料庫
- mysql操作MySql
- MySQL工具之binlog2sql閃回操作MySql
- MySQL之資料的insert-delete-update操作MySqldelete
- MySQL之終端:管理資料庫的基本操作MySql資料庫
- mysql lock操作MySql
- ORM操作mysqlORMMySql
- MySQL 常用操作MySql
- mysql常用操作MySql
- MySQL操作表MySql
- mysql基本操作MySql
- mysql騷操作MySql
- mysql資料庫操作之------查的各種小細節MySql資料庫
- Python 操作 MySQLPythonMySql
- mysql加快alter操作MySql
- python操作mysqlPythonMySql
- MySQL 事務操作MySql
- MySQL的基本操作MySql
- mysql常見操作MySql
- MySQL基本操作命令MySql
- [php]mysql操作流程PHPMySql
- MySQL表更新操作MySql
- php mysqli操作 mysqlPHPMySql
- MySQL DDL操作表MySql
- Mysql跨庫操作MySql
- 網路安全系列之十八 MySQL基本操作(PHP注入基礎)MySqlPHP
- 學習筆記【MySQL基礎操作-第一節:MySQL基本操作】筆記MySql
- Python如何操作MySQLPythonMySql