extension.go 798 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package main
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "github.com/mattn/go-sqlite3"
  6. "log"
  7. )
  8. func main() {
  9. sql.Register("sqlite3_with_extensions",
  10. &sqlite3.SQLiteDriver{
  11. Extensions: []string{
  12. "sqlite3_mod_regexp",
  13. },
  14. })
  15. db, err := sql.Open("sqlite3_with_extensions", ":memory:")
  16. if err != nil {
  17. log.Fatal(err)
  18. }
  19. defer db.Close()
  20. // Force db to make a new connection in pool
  21. // by putting the original in a transaction
  22. tx, err := db.Begin()
  23. if err != nil {
  24. log.Fatal(err)
  25. }
  26. defer tx.Commit()
  27. // New connection works (hopefully!)
  28. rows, err := db.Query("select 'hello world' where 'hello world' regexp '^hello.*d$'")
  29. if err != nil {
  30. log.Fatal(err)
  31. }
  32. defer rows.Close()
  33. for rows.Next() {
  34. var helloworld string
  35. rows.Scan(&helloworld)
  36. fmt.Println(helloworld)
  37. }
  38. }