很多语言都可以连接MySQL,像前面提到过的Java、Scala、python、pyspark等都可以连接MySQL,那么Go也一样可以连接。
话不多说,直接上代码:
package main
import(
"fmt"
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
//数据库信息
//用户名:密码@tcp(ip:端口号)/数据库名
con := "root:root@tcp(192.168.5.150:3306)/test"
//连接数据库
db,err := sql.Open("mysql", con)
//con 格式错误会提示错误
if err != nil {
fmt.Printf("con: %s invalid, err: %v\n",con,err)
return
}
err = db.Ping()
if err != nil {
fmt.Printf("open %s failed,err: %\n", con,err)
}
fmt.Println("connect success")
}
增删改查
package main
import(
"database/sql"
"fmt"
_ "github. com/go-sgl-driver/mysql"
)
func main(){
db,err := sql.Open("myaql","root:root@/test?charset=utf8")
checkErr(err)
//插入数据
stmt,err := db.Prepare("INSERT INTO userinfo set username=? , department=?,created=?")
checkErr(err)
res,err := stmt.Exec ("root","研发部","2000-01-01")
checkErr(err)
id, err := res.LastInsertId()
checkErr(err)
fmt.Println("id: ", id)
//更新数据
stmt,err = db.Prepare ("update userinfo set username=? where uid=?")
checkErr(err)
res, err = stmt.Exec("xxc", id)
checkErr(err)
affect, err := res.RowsAffected(
checkErr(err)
fmt.Println( "affect: ",affect)
//查询数据
rows, err := db.Query("SELECT * FROM userinfo")
checkErr(err)
for rows.Next(){
var uid int
var username string
var department string
var created string
err = rows.Scan (&uid,&username,&department,&created)
checkErr(err)
fmt.Println( "uid: ", uid)
fmt.Println( "username: ", username)
fmt.Println( "department: ",department)
fmt.Println( "created: ",created)
}
//删除数据
stmt, err = db.Prepare ("delete from userinfo where uid=?")
checkErr (err)
res, err =stmt.Exec(id)
checkErr (err)
affect, err = res.RowsAffected (
checkErr(err)
fmt.Println("affect: ",affect)
db.C1ose()
}
func checkErr(err error){
if err != nil {
panic(err)
}
}
结果:
$ go run mysql.go
id: 2
affect: 1
uid: 2
username: xxc
department: 研发部
created: 2000-01-01
affect: 1