Fork me on GitHub

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

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:password@tcp(127.0.0.1:3306)/demo_db") // 这里的地址若是本地3306接口可以写成user:password@tcp(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, "zhang@example.com")   
    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()
}
posted @   Banana_Fish  阅读(409)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示