go 调用sqlite

来源:互联网 发布:电信网络诈骗手段 编辑:程序博客网 时间:2024/06/06 23:54

简单的建表、插入、查询

package mainimport (    "database/sql"    "fmt"    "log"    "os"    _ "github.com/mattn/go-sqlite3")type User struct {    userid   int    username string}func main() {    os.Remove("./foo.db")    db, err := sql.Open("sqlite3", "./foo.db")    if err != nil {        log.Fatal(err)    }    defer db.Close()    //建表    sqlStmt := `create table foo (id integer not null primary key, name text);`    _, err = db.Exec(sqlStmt)    if err != nil {        log.Printf("%q: %s\n", err, sqlStmt)        return    }    tx, err := db.Begin()    if err != nil {        log.Fatal(err)    }    //插入    stmt, err := tx.Prepare("insert into foo(id, name) values(?, ?)")    if err != nil {        log.Fatal(err)    }    defer stmt.Close()    for i := 0; i < 10; i++ {        _, err = stmt.Exec(i, fmt.Sprintf("helloworld%02d", i))        if err != nil {            log.Fatal(err)        }    }    tx.Commit()    rows, err := db.Query("select id, name from foo")    if err != nil {        log.Fatal(err)    }    defer rows.Close()    for rows.Next() {        var id int        var name string        rows.Scan(&id, &name)        fmt.Println(id, name)    }    rows.Close()    stmt, err = db.Prepare("select name from foo where id = ?")    if err != nil {        log.Fatal(err)    }    defer stmt.Close()    var name string    err = stmt.QueryRow("7").Scan(&name)    if err != nil {        log.Fatal(err)    }    fmt.Println(name)    _, err = db.Exec("delete from foo")    if err != nil {        log.Fatal(err)    }    _, err = db.Exec("insert into foo(id, name) values(1, 'aaa'), (2, 'bbb'), (3, 'ccc')")    if err != nil {        log.Fatal(err)    }    rows, err = db.Query("select id, name from foo")    if err != nil {        log.Fatal(err)    }    defer rows.Close()    var user []User = make([]User, 0)    for rows.Next() {        var u User        rows.Scan(&u.userid, &u.username)        user = append(User, u)    }    fmt.Println(id, name)}
0 0
原创粉丝点击