小試牛刀 Go操作Mysql

2021-10-09 02:19:04 字數 2780 閱讀 3907

1. 原生操作mysql資料庫(依賴mysql的驅動)

安裝mysql驅動: go get github.com/go-sql-driver/mysql

/** * go操作mysql建立user資料表

*/func

(this *mysqlcontroller)

createusertable()

// 3. 使用defer在函式執行完畢後呼叫close方法關閉資料庫

defer conn.

close()

// 2. 運算元據庫:

// 使用exec()方法執行sql語句完成資料庫的操作

// 返回值是操作的結果和錯誤資訊

_, err = conn.

exec

("create table user(id int, name varchar(20))"

)if err !=

nil this.ctx.

writestring

("go操作mysql建立user資料表成功"

)}

// 其他省略,只演示query方法的使用

// query()方法的引數是查詢資料的sql語句

// 返回值是查詢的結果和錯誤資訊

rows, err := conn.

query

("select id from user"

)if err !=

nilvar id int

// 查詢結果rows物件是可遍歷的,依次取出查詢的結果寫入到id變數中

for rows.

next()

2. 使用orm操作mysql資料庫

/**

* orm操作mysql操作

* 1. 建立結構體和資料庫結構之間的對映

* 2. 連線資料庫:註冊資料庫

* 3. 註冊資料庫表

* 4. 生成資料表

*/// 這裡再models檔案中進行上面步驟的初始化,避免之後的重複操作

// 建立資料表的對映結構體

type user struct

func

init()

// 使用orm(物件關係對映)操作mysql資料庫

type ormcontroller struct

// 插入資料操作

func

(this *ormcontroller)

insertorm()

user.name =

"chensir"

// 執行插入操作, 引數為被插入物件的位址

// 返回值1: 插入影響的行數

// 返回值2: 錯誤資訊

_, err := o.

insert

(&user)

if err !=

nil this.ctx.

writestring

("插入資料成功!")}

// 查詢資料操作

func

(this *ormcontroller)

selectorm()

// 執行查詢操作,

// 引數為查詢物件位址,查詢到的結果會寫入到這個物件中

// 返回值是乙個錯誤資訊

err := o.

read

(&user)

if err !=

nil data, err := json.

marshal

(user)

if err !=

nil this.ctx.

writestring

(string

(data))}

// 更新資料操作

func

(this *ormcontroller)

updateorm()

// ** 3. 查詢更新物件 **

err := o.

read

(&user)

if err !=

nil// ** 4. 對查詢到的更新物件賦值 **

user.name =

"chensirlaile"

// 5. 執行更新操作

// 返回值第乙個為此次更新影響的資料行數

// 返回值第二個為更新操作的錯誤資訊

_, err = o.

update

(&user)

if err !=

nil this.ctx.

writestring

("更新資料成功")}

// 刪除資料操作

func

(this *ormcontroller)

deleteorm()

// 3. 執行刪除操作

_, err := o.

delete

(&user)

if err !=

nil this.ctx.

writestring

("刪除資料成功了"

)}

MySQL小試牛刀

1.進入黑視窗連線mysql伺服器 mysql u root 使用者名稱 p 小寫 密碼 p 大寫 3306 埠號 hocalhost 主機 2.斷開本次連線 exit quit 注意 mysql語句的結束符是 英文下的分號 3.設定密碼 set password for root localhos...

boost graph lib 小試牛刀

最近要做社會網路的社群發現,發現用bgl能減少不少 量。經過一番調研發現bgl封裝的很牛叉,dijkstra等演算法統統具備,奈何自己對泛型程式設計不太熟,遇到問題還是很糾結。primer泛型程式設計 演算法部分和stl原始碼分析接下來有時間一定要讀下。下面僅以鄰接鍊錶和自定義節點為例 typede...

Anti Debug 小試牛刀

本文整理了日常生活中遇到的一些anti debug技術,除非特殊說明,均適用於mac ios開發 作為第一篇正式博文,會不定期更新,謝謝大家.123 4567 89 define pt deny attach 31 include intmain 程式正常執行,會輸出hello 但是程式載入到gdb...