Introduction
SQLite is a lightweight, embedded relational database that's commonly used in Go applications due to its simplicity and ease of use. In this guide, you'll learn how to perform basic database operations with SQLite in a Go application. We'll cover creating a database, creating tables, inserting, querying, updating, and deleting data. Sample code is provided for each operation to illustrate how to work with SQLite and Go effectively.
Installing SQLite Driver
To work with SQLite in Go, you'll need to install an SQLite driver. The most commonly used SQLite driver for Go is "mattn/go-sqlite3." You can install it using the following command:
go get github.com/mattn/go-sqlite3
Creating a Database
To create an SQLite database, you need to open or create a file that will serve as the database. Here's an example of creating an SQLite database:
package main
import (
"database/sql"
_ "github.com/mattn/go-sqlite3"
"log"
)
func main() {
db, err := sql.Open("sqlite3", "my-database.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// Database is created if it doesn't exist
}
Creating Tables
Tables are used to store data in an SQLite database. You can define a table schema and execute a SQL statement to create a table. Here's an example of creating a "users" table:
// Create a "users" table
_, err := db.Exec(`
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT,
email TEXT
)
`)
if err != nil {
log.Fatal(err)
}
Inserting Data
To insert data into a table, you can use an SQL INSERT statement. Here's an example of inserting a new user into the "users" table:
// Insert a new user
_, err := db.Exec("INSERT INTO users (username, email) VALUES (?, ?)", "john_doe", "john@example.com")
if err != nil {
log.Fatal(err)
}
Querying Data
You can use SQL SELECT statements to query data from a table. Here's an example of querying all users from the "users" table:
// Query all users
rows, err := db.Query("SELECT * FROM users")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
// Iterate through the results
for rows.Next() {
var id int
var username, email string
if err := rows.Scan(&id, &username, &email); err != nil {
log.Fatal(err)
}
// Process the retrieved data
}
Updating Data
To update data in a table, you can use SQL UPDATE statements. Here's an example of updating a user's email:
// Update a user's email
_, err := db.Exec("UPDATE users SET email = ? WHERE id = ?", "new_email@example.com", 1)
if err != nil {
log.Fatal(err)
}
Deleting Data
To delete data from a table, you can use SQL DELETE statements. Here's an example of deleting a user from the "users" table:
// Delete a user
_, err := db.Exec("DELETE FROM users WHERE id = ?", 1)
if err != nil {
log.Fatal(err)
}
Conclusion
Working with SQLite in Go for basic database operations is straightforward and efficient. In this guide, we covered creating a database, creating tables, inserting, querying, updating, and deleting data using sample code examples. You can use these fundamentals to build more complex applications with SQLite databases.
Further Resources
To further explore SQLite and Go database operations, consider the following resources:
- go-sqlite3 Package Documentation - Documentation for the "mattn/go-sqlite3" SQLite driver for Go.
- SQLite Official Documentation - Official documentation for SQLite.