dbtest.go (1047B)
1 package main 2 3 import ( 4 "database/sql" 5 "github.com/google/uuid" 6 _ "github.com/mattn/go-sqlite3" 7 "log" 8 ) 9 10 var migrateDevices = []string{`CREATE TABLE devices ( 11 "address" TEXT NOT NULL PRIMARY KEY, 12 "class" TEXT NOT NULL, 13 "name" TEXT NOT NULL 14 );`} 15 16 var queryInsertDevices = "INSERT INTO devices VALUES (?, ?, ?)" 17 var queryGetDevices = "SELECT * FROM devices" 18 19 func main() { 20 db, err := sql.Open("sqlite3", "file::memory:?cache=shared") 21 if err != nil { 22 log.Panic(err) 23 } 24 for _, migration := range migrateDevices { 25 stmt, err := db.Prepare(migration) 26 if err != nil { 27 log.Panic(err) 28 } 29 stmt.Exec() 30 } 31 stmt, err := db.Prepare(queryInsertDevices) 32 if err != nil { 33 log.Panic(err) 34 } 35 _, err = stmt.Exec(uuid.NewString(), "uncap", "My device") 36 if err != nil { 37 log.Panic(err) 38 } 39 row, err := db.Query(queryGetDevices) 40 if err != nil { 41 log.Panic(err) 42 } 43 defer row.Close() 44 for row.Next() { 45 var address, class, name string 46 row.Scan(&address, &class, &name) 47 log.Printf("Loaded device: %s, %s, %s\n", address, class, name) 48 } 49 }