這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
這兩天用golang 寫的服務端做的都是和redis做互動,因為後期還會用mysql的一個表做驗證。 先學習下golang對mysql的操作 !
mymysql和go-mysql-driver是兩個現在都很流行的go的mysql驅動,看了下文檔,後者比較的健全,聽大牛們介紹,貌似go-mysql-driver更加的健全。
安裝配置還是那麼簡單,直接go get就可以了
好了,咱們就開始用go-sql-driver增刪改查
先用go-sql-driver連結mysql !!!
一看就懂了,帳號:密碼@模式 資料庫,以及附帶的參數
Pythonuser@unix(/path/to/socket)/dbnameroot:pw@unix(/tmp/mysql.sock)/myDatabase?loc=Localuser:password@tcp(localhost:5555)/dbname?tls=skip-verify&autocommit=true
| 1234 |
user@unix(/path/to/socket)/dbnameroot:pw@unix(/tmp/mysql.sock)/myDatabase?loc=Localuser:password@tcp(localhost:5555)/dbname?tls=skip-verify&autocommit=true |
完整的例子!
Python//xiaorui.cc#xiaorui.ccpackage mainimport ( "database/sql" //這包一定要引用,是底層的sql驅動 "fmt" _ "github.com/go-sql-driver/mysql" "strconv" //這個是為了把int轉換為string)func main() { //main函數 db, err := sql.Open("mysql", "root:@tcp(localhost:3306)/dbname?charset=utf8") //資料庫連接字串,別告訴我看不懂。連接埠一定要寫/ if err != nil { //串連成功 err一定是nil否則就是報錯 panic(err.Error()) //拋出異常 fmt.Println(err.Error())//僅僅是顯示異常 } defer db.Close() //只有在前面用了 panic 這時defer才能起作用,如果連結資料的時候出問題,他會往err寫資料 rows, err := db.Query("select id,lvs from xiaorui") //判斷err是否有錯誤的資料,有err資料就顯示panic的資料 if err != nil { panic(err.Error()) fmt.Println(err.Error()) return } defer rows.Close() var id int //定義一個id 變數 var lvs string //定義lvs 變數 for rows.Next() { //開始迴圈 rerr := rows.Scan(&id, &lvs) //資料指標,會把得到的資料,往剛才id 和 lvs引入 if rerr == nil { fmt.Println("id號是",strconv.Itoa(id) + " lvs lvs是"+ lvs) //輸出來而已,看看 } } insert_sql := "INSERT INTO xiaorui(lvs) VALUES(?)" _, e4 := db.Exec(insert_sql,"nima") fmt.Println(e4) db.Close() //關閉資料庫}
| 12345678910111213141516171819202122232425262728293031323334353637383940 |
//xiaorui.cc#xiaorui.ccpackage mainimport ( "database/sql" //這包一定要引用,是底層的sql驅動 "fmt" _ "github.com/go-sql-driver/mysql" "strconv" //這個是為了把int轉換為string)func main() { //main函數 db, err := sql.Open("mysql", "root:@tcp(localhost:3306)/dbname?charset=utf8") //資料庫連接字串,別告訴我看不懂。連接埠一定要寫/ if err != nil { //串連成功 err一定是nil否則就是報錯 panic(err.Error()) //拋出異常 fmt.Println(err.Error())//僅僅是顯示異常 } defer db.Close() //只有在前面用了 panic 這時defer才能起作用,如果連結資料的時候出問題,他會往err寫資料 rows, err := db.Query("select id,lvs from xiaorui") //判斷err是否有錯誤的資料,有err資料就顯示panic的資料 if err != nil { panic(err.Error()) fmt.Println(err.Error()) return } defer rows.Close() var id int //定義一個id 變數 var lvs string //定義lvs 變數 for rows.Next() { //開始迴圈 rerr := rows.Scan(&id, &lvs) //資料指標,會把得到的資料,往剛才id 和 lvs引入 if rerr == nil { fmt.Println("id號是",strconv.Itoa(id) + " lvs lvs是"+ lvs) //輸出來而已,看看 } } insert_sql := "INSERT INTO xiaorui(lvs) VALUES(?)" _, e4 := db.Exec(insert_sql,"nima") fmt.Println(e4) db.Close() //關閉資料庫} |