SQL Standard Library
From immudb v1.1.0 is possible to use go standard library sql interface to query data.
1package main
2
3import (
4 "context"
5 "fmt"
6 "log"
7
8 immudb "github.com/codenotary/immudb/pkg/client"
9 "github.com/codenotary/immudb/pkg/stdlib"
10)
11
12func main() {
13 opts := immudb.DefaultOptions()
14 opts.Username = "immudb"
15 opts.Password = "immudb"
16 opts.Database = "defaultdb"
17
18 db := stdlib.OpenDB(opts)
19 defer db.Close()
20
21 _, err := db.ExecContext(
22 context.TODO(),
23 "CREATE TABLE myTable(id INTEGER, name VARCHAR, PRIMARY KEY id)",
24 )
25 if err != nil {
26 log.Fatal(err)
27 }
28
29 _, err = db.ExecContext(
30 context.TODO(),
31 "INSERT INTO myTable (id, name) VALUES (1, 'immudb1')",
32 )
33 if err != nil {
34 log.Fatal(err)
35 }
36
37 rows, err := db.QueryContext(
38 context.TODO(),
39 "SELECT * FROM myTable",
40 )
41 if err != nil {
42 log.Fatal(err)
43 }
44 defer rows.Close()
45
46 if !rows.Next() {
47 log.Fatal("Did not fetch the row")
48 }
49
50 var id uint64
51 var name string
52 err = rows.Scan(&id, &name)
53 if err != nil {
54 log.Fatal(err)
55 }
56
57 fmt.Printf("id: %d\n", id)
58 fmt.Printf("name: %s\n", name)
59}In alternative is possible to open immudb with a connection string:
1package main
2
3import (
4 "context"
5 "fmt"
6 "log"
7
8 "database/sql"
9
10 _ "github.com/codenotary/immudb/pkg/stdlib"
11)
12
13func main() {
14 db, err := sql.Open(
15 "immudb",
16 "immudb://immudb:immudb@127.0.0.1:3322/defaultdb?sslmode=disable",
17 )
18 if err != nil {
19 log.Fatal(err)
20 }
21 defer db.Close()
22
23 _, err = db.ExecContext(
24 context.TODO(),
25 "CREATE TABLE myTable(id INTEGER, name VARCHAR, PRIMARY KEY id)",
26 )
27 if err != nil {
28 log.Fatal(err)
29 }
30
31 _, err = db.ExecContext(
32 context.TODO(),
33 "INSERT INTO myTable (id, name) VALUES (1, 'immudb1')",
34 )
35 if err != nil {
36 log.Fatal(err)
37 }
38
39 rows, err := db.QueryContext(
40 context.TODO(),
41 "SELECT * FROM myTable",
42 )
43 if err != nil {
44 log.Fatal(err)
45 }
46 defer rows.Close()
47
48 if !rows.Next() {
49 log.Fatal("Did not fetch the row")
50 }
51
52 var id uint64
53 var name string
54 err = rows.Scan(&id, &name)
55 if err != nil {
56 log.Fatal(err)
57 }
58
59 fmt.Printf("id: %d\n", id)
60 fmt.Printf("name: %s\n", name)
61}Available SSL modes are:
- disable. SSL is off
- insecure-verify. SSL is on but client will not check the server name.
- require. SSL is on.
Edit this page on GitHub
Last updated