• Go基础编程实践(十)—— 数据库


    从数据库中读取数据

    http://sqlitebrowser.org/下载sqlite3可视化工具,在本main.go同目录下创建personal.db数据库,创建表如下:

    package main
    
    import (
        "database/sql"
        "fmt"
    
        _ "github.com/mattn/go-sqlite3"
    )
    // 用struct类型将来自SQL数据库的数据映射到内存中的对象
    type Profile struct {
        ProfileId int
        FirstName string
        LastName string
        Age int
    }
    
    func main() {
        db, err := sql.Open("sqlite3", "./personal.db")
        checkError(err)
        var profile Profile
        // Query可以使用参数
        rows, err := db.Query("select ProfileId, FirstName, LastName, Age from Profile where FirstName = ? and LastName = ?", "Tarik", "Guney")
        checkError(err)
        for rows.Next() {
            err := rows.Scan(&profile.ProfileId, &profile.FirstName, &profile.LastName, &profile.Age)
            checkError(err)
            fmt.Println(profile)
        }
        rows.Close()
        db.Close()
    }
    
    func checkError(err error) {
        if err != nil {
            panic(err)
        }
    }
    

    将数据插入数据库

    package main
    
    import (
        _ "github.com/mattn/go-sqlite3"
        "database/sql"
        "fmt"
    )
    
    type Profile struct{
        ProfileId int
        FirstName string
        LastName string
        Age int
    }
    
    func main(){
        db, err := sql.Open("sqlite3", "./personal.db")
        checkError(err)
        /* 更新数据库数据
        statement, err := db.Prepare("update Profile set FirstName = ? where ProfileId = ?")
        checkError(err)
        statement.Exec("Martha", 5)
        */
        statement, err := db.Prepare("insert into Profile (FirstName, LastName, Age) values(?,?,?)")
        checkError(err)
        statement.Exec("Jessica", "McArthur", 30)
        /* 删除数据库数据
        statement ,err := db.Prepare("delete from Profile where  ProfileId = ?")
        checkError(err)
        statement.Exec(3)
        */
        var profile Profile
        rows, err := db.Query("select ProfileId, FirstName, LastName, Age from Profile")
        checkError(err)
        for rows.Next(){
            err := rows.Scan(&profile.ProfileId, &profile.FirstName, &profile.LastName, &profile.Age)
            checkError(err)
            fmt.Println(profile)
        }
        rows.Close()
        db.Close()
    }
    
    func checkError(err error) {
        if (err != nil) {
            panic(err)
        }
    }
    
  • 相关阅读:
    POJ2481:Cows(树状数组)
    Go语言用堆排序的方法进行一千万个int随机数排序.
    【一】注入框架RoboGuice使用:(A brief example of what RoboGuice does)
    POJ3067:Japan(树状数组求逆序对)
    Android开发之ListView实现不同品种分类分隔栏的效果(非ExpandableListView实现)
    躁动不安的const
    JAVA实现RSA加密解密 非对称算法
    Cocos2d坐标系具体解释
    leetcode_Product of Array Except Self
    IIS2008配置URlRewriter
  • 原文地址:https://www.cnblogs.com/GaiHeiluKamei/p/11181765.html
Copyright © 2020-2023  润新知