Skip to content

Latest commit

 

History

History
50 lines (39 loc) · 1.25 KB

connect-to-a-sqlite-database.md

File metadata and controls

50 lines (39 loc) · 1.25 KB

Connect To A SQLite Database

Using the database/sql module and the github.com/mattn/go-sqlite3 package, we can connect to a SQLite database and run some queries. In my case, I have a SQLite connection string exported to my environment, so I can access that with os.Getenv. It's a local SQLite file, ./test.db.

Calling sql.Open, I'm able to connect with a SQLite3 driver to the database at that connection string. The setupDatabase function returns that database connection pointer. Things like Exec and QueryRow can be called on db. I also need to make sure I close the connection to the database with a defer.

Here is a full example of connecting to a local SQLite database and inserting a record:

package main

import (
	"database/sql"
	"fmt"
	"os"

	_ "github.com/mattn/go-sqlite3"
)

func setupDatabase() *sql.DB {
	databaseString := os.Getenv("GOOSE_DBSTRING")
	if len(databaseString) == 0 {
		fmt.Println("Error retrieving `GOOSE_DBSTRING` from env")
		os.Exit(1)
	}
	db, err := sql.Open("sqlite3", databaseString)
	if err != nil {
		fmt.Printf("Error opening database: %v\n", err)
		os.Exit(1)
	}

	return db
}

func main() {
	db := setupDatabase()
	defer db.Close()

	sql := `insert into users (name) values (?);`

	db.Exec(sql, "Josh")
}