Go

Prepared Statement Reuse

admin by @admin ADMIN
2m ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
For repeated queries (loops, bulk inserts), prepare once and re-use. The driver caches the parsed query and saves a round trip per invocation.
Go
Raw
package main

import (
    "context"
    "database/sql"
    "log"
)

type Event struct {
    UserID int
    Name   string
}

func InsertEvents(ctx context.Context, db *sql.DB, events []Event) error {
    stmt, err := db.PrepareContext(ctx,
        "INSERT INTO events (user_id, name) VALUES (?, ?)")
    if err != nil { return err }
    defer stmt.Close()

    for _, e := range events {
        if _, err := stmt.ExecContext(ctx, e.UserID, e.Name); err != nil {
            return err
        }
    }
    return nil
}

func main() {
    db, err := sql.Open("sqlite3", "app.db")
    if err != nil { log.Fatal(err) }
    defer db.Close()

    InsertEvents(context.Background(), db, []Event{
        {1, "login"}, {1, "view_page"}, {2, "signup"},
    })
}
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.