//QQ29295842

我的例子

package go_task

import (
    "database/sql"
    "fmt"
    "os"
    //"strings"
    "time"
    _ "github.com/mattn/go-sqlite3"
)
type appContext struct {
    db *sql.DB
}
//func add_TABLE()
// 检查文件或目录是否存在// 如果由 filename 指定的文件或目录存在则返回 true,否则返回 false
func Exist(filename string) bool {
    _, err := os.Stat(filename)
    return err == nil || os.IsExist(err)
}
func SQLite_open(name string) (*appContext, string) { //打开数据库
    if Exist(name) {
        fmt.Println("file SQLite ok")
        //os.Remove("abc.db") //删除文件
        db, err := sql.Open("sqlite3", name)
        if err != nil {
            return nil, err.Error()
        }
        if err = db.Ping(); err != nil {
            return nil, err.Error()
        }
        return &appContext{db}, ""
        //defer db.Close()
    } else {
        fmt.Println("file SQLite no")
        os.Create(name) //创建文件
        //
        db, err := sql.Open("sqlite3", name)
        if err != nil {
            return nil, err.Error()
        }
        if err = db.Ping(); err != nil {
            return nil, err.Error()
        }
        //defer db.Close()
        ///
        sqlStmt := `
                    CREATE TABLE "log" (
                    "id"  INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
                    "name"  TEXT(100) NOT NULL,
                    "megbox"  TEXT(100) NOT NULL,
                    "time"  TEXT(100) NOT NULL
                    );
                    `
        _, err = db.Exec(sqlStmt) //创建表
        if err != nil {
            fmt.Printf("%q: %s\n", err, sqlStmt)
            return nil, err.Error()
        }
        defer db.Close()
        /
        dbx, err := sql.Open("sqlite3", name)
        if err != nil {
            return nil, err.Error()
        }
        if err = dbx.Ping(); err != nil {
            return nil, err.Error()
        }
        return &appContext{dbx}, ""
    }
}
func (c *appContext) SQLite_Exec(sql string) {
    _, err := c.db.Exec(sql)
    if err != nil {
        fmt.Printf("add error: %v", err)
        return
    }
}
func Time_Unix() string { //获取时间戳
    time_data := fmt.Sprintf("%d", time.Now().Unix())
    return time_data
}


    c, err := go_task.SQLite_open("abc.db")

    if err != "" {
        print(err)
    }
    sql := fmt.Sprintf("insert into log(name,megbox,time) VALUES('111','222','%s')", go_task.Time_Unix())
    c.SQLite_Exec(sql)

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐