亲测可用的golang sql例程与包管理

sqlite与golang

package main

import (
    "database/sql"
    "fmt"
    "time"

    _ "github.com/mattn/go-sqlite3"
)

func main() {
    //打开数据库,如果不存在,则创建
    db, err := sql.Open("sqlite3", "./foo.db")
    checkErr(err)

    //创建表
    sql_table := `
    CREATE TABLE IF NOT EXISTS userinfo(
        uid INTEGER PRIMARY KEY AUTOINCREMENT,
        username VARCHAR(64) NULL,
        departname VARCHAR(64) NULL,
        created DATE NULL
    );
    `

    db.Exec(sql_table)

    // insert
    stmt, err := db.Prepare("INSERT INTO userinfo(username, departname, created) values(?,?,?)")
    checkErr(err)

    res, err := stmt.Exec("wangshubo", "国务院", "2017-04-21")
    checkErr(err)

    id, err := res.LastInsertId()
    checkErr(err)

    fmt.Println(id)

    // update
    stmt, err = db.Prepare("update userinfo set username=? where uid=?")
    checkErr(err)

    res, err = stmt.Exec("wangshubo_new", id)
    checkErr(err)

    affect, err := res.RowsAffected()
    checkErr(err)

    fmt.Println(affect)

    // query
    rows, err := db.Query("SELECT * FROM userinfo")
    checkErr(err)
    var uid int
    var username string
    var department string
    var created time.Time

    for rows.Next() {
        err = rows.Scan(&uid, &username, &department, &created)
        checkErr(err)
        fmt.Println(uid)
        fmt.Println(username)
        fmt.Println(department)
        fmt.Println(created)
    }

    rows.Close()

    // delete
    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)

    db.Close()

}

func checkErr(err error) {
    if err != nil {
        panic(err)
    }
}

  1、包管理,apt-get install golang-glide     然后glide init,会自动产生glide.yaml,注意需要配置环境变量GOPATH,GOPATH可以是任意目录,但是init的时候会提示没有src目录,所以需要在GOPATH下面mkdir src文件夹。

        2、glide get xxxx,然后将$GOPATH里面的包,cp到GOPATH的指定目录

 

posted @ 2017-11-14 16:48  haha1680737  阅读(721)  评论(0编辑  收藏  举报