| package main |
| |
| import ( |
| "database/sql" |
| "fmt" |
| "log" |
| |
| "github.com/mattn/go-sqlite3" |
| ) |
| |
| func main() { |
| sql.Register("sqlite3_with_extensions", &sqlite3.SQLiteDriver{ |
| ConnectHook: func(conn *sqlite3.SQLiteConn) error { |
| return conn.CreateModule("series", &seriesModule{}) |
| }, |
| }) |
| db, err := sql.Open("sqlite3_with_extensions", ":memory:") |
| if err != nil { |
| log.Fatal(err) |
| } |
| defer db.Close() |
| |
| for _, query := range []string{ |
| "select value from series where value between 3 and 5", |
| "select value from series where start = 10 and stop = 20 and step = 5", |
| "select value from series where start = 3 and stop = -3 and step = -2", |
| } { |
| fmt.Println(query) |
| rows, err := db.Query(query) |
| if err != nil { |
| log.Fatal(err) |
| } |
| for rows.Next() { |
| var value int |
| if err := rows.Scan(&value); err != nil { |
| log.Fatal(err) |
| } |
| fmt.Printf("value: %d\n", value) |
| } |
| if err := rows.Err(); err != nil { |
| log.Fatal(err) |
| } |
| rows.Close() |
| } |
| } |