golang学习----数据库操作

时间:2021-12-09 07:11:31

golang 操作数据库

golang操作数据库的过程十分简单,以下是一个简单的增删改查的操作,这里我们使用MySQL数据库为例。

连接数据库

? 连接数据库我们首先需要下载相应数据库的驱动,这里我们选择的是MySQL数据库驱动,所以我们先去拉取驱动。在这之前我们需要有git-下载地址: https://git-scm.com/ ,若下载速度慢,建议使用如下地址 https://npm.taobao.org/mirrors/git-for-windows/ 选择相应的版本下载即可。

  1. go get github.com/go-sql-driver/mysql 拉取驱动,若是其他数据库可以修改后面的名称或去相应的github上寻找

  2. import ( _ "github.com/go-sql-driver/mysql") 在代码中导入这个驱动包,这么做会调用mysql包中的init方法。

  3. var db *sql.DB
    func conn(){
    open, err := sql.Open("mysql", "user:[email protected](127.0.0.1:3306)/demo_db") // 这里的地址若是本地3306接口可以写成user:[email protected](127.0.0.1:3306)/demo_db
    if err!=nil {   log.Fatal(err)   panic(err)} 
    db = open
    }

数据操作

插入数据

//  数据添加
func add(){  
    _, err := db.Exec("insert into user (name, age, email) value (?,?,?)", "张三", 20, "[email protected]")   
    if err!=nil {      
        fmt.Println(err)      
        panic(err)   
    }
}

删除数据

//  数据删除
func remove(){   
    exec, err := db.Exec("delete from user where id = ?", 6)   
    if err != nil {      
        fmt.Println(err)      
        panic(err)   
    }   
    fmt.Println(exec.RowsAffected())
}

修改数据

func modify(){
    exec, err := db.Exec("update user set name = ?,age = ? where id = ?", "babiqus", "22", 6)   
    if err!=nil {    
        fmt.Println(err)     
        panic(err)  
    }   
    fmt.Println(exec.RowsAffected())
}

查询数据

func query() {   
    query, err := db.Query("select * from user")  
    if err!=nil {    
        log.Fatal(err)    
        panic(err)  
    }  
    defer query.Close()   
    // 必须要把 query 里的内容读完,或者显式调用 Close() 方法,   
    // 否则在 defer 的 rows.Close() 执行之前,连接永远不会释放   
    var userList []User
    for query.Next(){   
        user := new(User)   
        err := query.Scan(&user.id,&user.name,&user.age,&user.email)    
        if err != nil{    
            log.Fatal(err)    
        }    
        userList = append(userList, *user)   
    }  
    for _, value := range userList {  
        fmt.Println(value)  
    }
}

使用

func init(){  
    conn()
}
func main() {   
    //add()  
    //modify()
    //remove()  
    query()
    defer db.Close()
}