mirror of
https://github.com/ncruces/go-sqlite3.git
synced 2026-01-11 21:49:13 +00:00
76 lines
1.3 KiB
Go
76 lines
1.3 KiB
Go
package sqlite3_test
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/ncruces/go-sqlite3"
|
|
_ "github.com/ncruces/go-sqlite3/driver"
|
|
_ "github.com/ncruces/go-sqlite3/embed"
|
|
)
|
|
|
|
var db *sql.DB
|
|
|
|
func ExampleDriverConn() {
|
|
var err error
|
|
db, err = sql.Open("sqlite3", "demo.db")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer os.Remove("demo.db")
|
|
defer db.Close()
|
|
|
|
ctx := context.Background()
|
|
|
|
conn, err := db.Conn(ctx)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer conn.Close()
|
|
|
|
_, err = conn.ExecContext(ctx, `CREATE TABLE IF NOT EXISTS test (col)`)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
res, err := conn.ExecContext(ctx, `INSERT INTO test VALUES (?)`, sqlite3.ZeroBlob(11))
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
id, err := res.LastInsertId()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
err = conn.Raw(func(driverConn any) error {
|
|
conn := driverConn.(sqlite3.DriverConn)
|
|
savept := conn.Savepoint()
|
|
defer savept.Release(&err)
|
|
|
|
blob, err := conn.OpenBlob("main", "test", "col", id, true)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer blob.Close()
|
|
|
|
_, err = fmt.Fprint(blob, "Hello BLOB!")
|
|
return err
|
|
})
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
var msg string
|
|
err = conn.QueryRowContext(ctx, `SELECT col FROM test`).Scan(&msg)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
fmt.Println(msg)
|
|
// Output:
|
|
// Hello BLOB!
|
|
}
|