• Go & SQLite on Windows


    一般golang使用的sqlite驱动包都是github.com/mattn/go-sqlite3,但是官方并没有直接支持windows平台的编译,因为windows平台编译默认需要gcc支持

    其实解决办法很简单,只需要在windows平台下安装gcc即可正常使用。

    编译错误如下:

    go get github.com/mattn/go-sqlite3
    # github.com/mattn/go-sqlite3
    exec: "gcc": executable file not found in %PATH%

    下面说明如何解决:

    1. 下载GCC  http://tdm-gcc.tdragon.net/download

    2. 安装GCC

     

    3. 打开MinGW Command Prompt 安装sqlite3

    go get github.com/mattn/go-sqlite3

    4. 安装好就可以测试程序了

    package main
    
    import (
        "database/sql"
        "fmt"
    
        _ "github.com/mattn/go-sqlite3"
    )
    
    func main() {
        //1. Open connection
    
        db, err := sql.Open("sqlite3", ":memory:")
        checkErr(err)
        defer db.Close()
    
        //2. fail-fast if can't connect to DB
    
        checkErr(db.Ping())
    
        //3. create table
    
        _, err = db.Exec("create table USER (ID integer PRIMARY KEY, NAME string not null); delete from USER;")
        checkErr(err)
    
        //4. insert data
    
        //4.1 Begin transaction
        tx, err := db.Begin()
        checkErr(err)
    
        //4.2 Prepare insert stmt.
        stmt, err := tx.Prepare("insert into USER(ID, NAME) values(?, ?)")
        checkErr(err)
        defer stmt.Close()
    
        for i := 0; i < 10; i++ {
            _, err = stmt.Exec(i, fmt.Sprint("user-", i))
            checkErr(err)
        }
    
        //4.3 Commit transaction
        tx.Commit()
    
        //5. Query data
    
        rows, err := db.Query("select * from USER")
        checkErr(err)
        defer rows.Close()
    
        //5.1 Iterate through result set
        for rows.Next() {
            var name string
            var id int
            err := rows.Scan(&id, &name)
            checkErr(err)
            fmt.Printf("id=%d, name=%s
    ", id, name)
        }
    
        //5.2 check error, if any, that were encountered during iteration
        err = rows.Err()
        checkErr(err)
    }
    
    func checkErr(err error, args ...string) {
        if err != nil {
            fmt.Println("Error")
            fmt.Println("%q: %s", err, args)
        }
    }
  • 相关阅读:
    SpringCloud
    Springboot笔记
    SpringMVC学习随笔
    Spring中事务的理解
    Spring中Aop的理解
    FLutter 各种项目的目录创建
    flutter 打包Android 创建签名证书
    flutter web网站 第一次访问首屏页 空白卡顿 再显示
    flutter--报错--Flutter 调试时卡在 Installing buildappoutputsapkapp.apk
    flutter 顶部状态栏 底部栏 显示和隐藏
  • 原文地址:https://www.cnblogs.com/davygeek/p/8563565.html
Copyright © 2020-2023  润新知