[Golang] sqlite3 Database Example - Basic Usage
source link: http://siongui.github.io/2016/01/09/go-sqlite-example-basic-usage/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Source Code
The following is the source code of Go program that uses SQLite (version 3):
sqlite3.go | repository | view raw
package mylib import ( "database/sql" _ "github.com/mattn/go-sqlite3" ) type TestItem struct { Id string Name string Phone string } func InitDB(filepath string) *sql.DB { db, err := sql.Open("sqlite3", filepath) if err != nil { panic(err) } if db == nil { panic("db nil") } return db } func CreateTable(db *sql.DB) { // create table if not exists sql_table := ` CREATE TABLE IF NOT EXISTS items( Id TEXT NOT NULL PRIMARY KEY, Name TEXT, Phone TEXT, InsertedDatetime DATETIME ); ` _, err := db.Exec(sql_table) if err != nil { panic(err) } } func StoreItem(db *sql.DB, items []TestItem) { sql_additem := ` INSERT OR REPLACE INTO items( Id, Name, Phone, InsertedDatetime ) values(?, ?, ?, CURRENT_TIMESTAMP) ` stmt, err := db.Prepare(sql_additem) if err != nil { panic(err) } defer stmt.Close() for _, item := range items { _, err2 := stmt.Exec(item.Id, item.Name, item.Phone) if err2 != nil { panic(err2) } } } func ReadItem(db *sql.DB) []TestItem { sql_readall := ` SELECT Id, Name, Phone FROM items ORDER BY datetime(InsertedDatetime) DESC ` rows, err := db.Query(sql_readall) if err != nil { panic(err) } defer rows.Close() var result []TestItem for rows.Next() { item := TestItem{} err2 := rows.Scan(&item.Id, &item.Name, &item.Phone) if err2 != nil { panic(err2) } result = append(result, item) } return result }
Now we open database and create a table in our test program. Then write some data to the table and then read the data from the table.
sqlite3_test.go | repository | view raw
package mylib import "testing" func TestAll(t *testing.T) { const dbpath = "foo.db" db := InitDB(dbpath) defer db.Close() CreateTable(db) items := []TestItem{ TestItem{"1", "A", "213"}, TestItem{"2", "B", "214"}, } StoreItem(db, items) readItems := ReadItem(db) t.Log(readItems) items2 := []TestItem{ TestItem{"1", "C", "215"}, TestItem{"3", "D", "216"}, } StoreItem(db, items2) readItems2 := ReadItem(db) t.Log(readItems2) }
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK