在golang中操作mysql資料庫(1)實現增刪改操作
來源:互聯網
上載者:User
**Golang操作mysql簡介**Golang操作mysql資料庫的感覺有點想php中的pdo對mysql操作,假設你原本是phper轉型到golang中的接受起來很親切,總體的感覺非常簡單**Golang操作mysql的注意點**`golang實現了對mysql操作的標準庫然而卻沒有實現mysql的驅動`因此我們需要先從github中下載go-sql-driver這個驅動包(建議在src目錄下執行),使用命令如下所示:```gogo get github.com/go-sql-driver/mysql```**在test資料庫中建立表欄位如下所示**```goCREATE TABLE IF NOT EXISTS `test`.`user` ( `user_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '使用者編號', `user_name` VARCHAR(45) NOT NULL COMMENT '使用者名稱稱', `user_age` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用者年齡', `user_sex` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用者性別', PRIMARY KEY (`user_id`)) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '使用者表'```**實現對資料的增(insert)操作**```gopackage mainimport ("fmt""database/sql"//匯入mysql的驅動_ "github.com/go-sql-driver/mysql" )func main(){//使用database/sql包中的Open串連資料庫db,err := sql.Open("mysql","root:root@tcp(localhost:3306)/test?charset=utf8")if err != nil {fmt.Println("串連資料庫失敗:",err)return }//使用DB結構體執行個體方法Prepare預先處理插入,Prepare會返回一個stmt對象stmt,err := db.Prepare("insert into `user`(user_name,user_age,user_sex)values(?,?,?)")if err!=nil{fmt.Println("預先處理失敗:",err)return }//使用Stmt對象執行預先處理參數result,err := stmt.Exec("pengjin",33,"男")if err!=nil{fmt.Println("執行預先處理失敗:",err)return }else{rows,_ := result.RowsAffected()fmt.Println("執行成功,影響行數",rows,"行" )}}````如上代碼有一種操作php中pdo的感覺`,如上代碼實際上也可以不編寫Prepare方法直接通過Exec方法直接實現操作,相當於一種簡寫方式,我們可以嘗試使用這種方法直接實現刪除操作**實現對資料的刪(delete)操作**```gopackage mainimport ("fmt""database/sql"//匯入mysql的驅動_ "github.com/go-sql-driver/mysql" )func main(){//使用database/sql包中的Open串連資料庫db,err := sql.Open("mysql","root:root@tcp(localhost:3306)/test?charset=utf8")if err != nil {fmt.Println("串連資料庫失敗:",err)return }//直接調用db執行個體中的Exec方法實現預先處理result,err := db.Exec("delete from `user` where user_id=?",1)if err!=nil{fmt.Println("預先處理失敗:",err)return }if err!=nil{fmt.Println("執行預先處理失敗:",err)return }else{rows,_ := result.RowsAffected()fmt.Println("執行成功,影響行數",rows,"行" )}}```**實現對資料庫的update操作**```gopackage mainimport ("fmt""database/sql"//匯入mysql的驅動_ "github.com/go-sql-driver/mysql" )func main(){//使用database/sql包中的Open串連資料庫db,err := sql.Open("mysql","root:root@tcp(localhost:3306)/test?charset=utf8")if err != nil {fmt.Println("串連資料庫失敗:",err)return }//直接調用db執行個體中的Exec方法實現預先處理result,err := db.Exec("update `user` set user_age=?,user_name=? where user_id=?",34,"zhangsan",2)if err!=nil{fmt.Println("預先處理失敗:",err)return }if err!=nil{fmt.Println("執行預先處理失敗:",err)return }else{rows,_ := result.RowsAffected()fmt.Println("執行成功,影響行數",rows,"行" )}}```100 次點擊