Skip to content

Instantly share code, notes, and snippets.

@rusco
Created August 11, 2022 09:13
Show Gist options
  • Save rusco/d8ea2a2be34625596398b4ef6dda0b21 to your computer and use it in GitHub Desktop.
Save rusco/d8ea2a2be34625596398b4ef6dda0b21 to your computer and use it in GitHub Desktop.
shows example embedding of a sqlite database in a Go binary (go 1.19/modernc.org/sqlite, v1.18.1)
//shows example embedding of a sqlite database in a Go binary (go 1.19/modernc.org/sqlite, v1.18.1)
package main
import (
"database/sql"
"embed"
"fmt"
"log"
"modernc.org/sqlite/vfs"
)
//go:embed foo.db
var fs embed.FS
func main() {
f2n, _, err := vfs.New(fs)
if err != nil {
log.Fatal(err)
}
db, err := sql.Open("sqlite", "file:foo.db?vfs="+f2n)
if err != nil {
log.Fatal(err)
}
defer db.Close()
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
err = rows.Scan(&id, &name)
if err != nil {
log.Fatal(err)
}
fmt.Println(id, name)
}
err = rows.Err()
if err != nil {
log.Fatal(err)
}
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("3").Scan(&name)
if err != nil {
log.Fatal(err)
}
fmt.Println(name)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment