← Niveau 4 – Data pro

Lektion 4 af 6 ⏱ 45 minutter Premium

SQLite – en database i én fil

Installer SQLite i Node.js og gem din første række i en tabel.

Hvad SQLite er

SQLite er en database gemt i én fil (f.eks. web.db). Du behøver ikke installere nogen stor server – ideelt til læring og mindre projekter. Data i den overlever en Node.js-genstart.

I Node.js bruger vi pakken better-sqlite3:

cd my-server
npm install better-sqlite3

Vis mig: en tabel og den første post

I server.js (eller en ny database.js, som du importerer):

const Database = require("better-sqlite3");
const db = new Database("web.db");

// Create the table if it doesn't exist yet
db.exec(`
  CREATE TABLE IF NOT EXISTS vzkazy (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    jmeno TEXT NOT NULL,
    text TEXT NOT NULL,
    vytvoreno TEXT DEFAULT CURRENT_TIMESTAMP
  )
`);

// Insert one row
const vloz = db.prepare("INSERT INTO vzkazy (jmeno, text) VALUES (?, ?)");
vloz.run("Martin", "First message in the database! 🎉");

// Read all rows
const vse = db.prepare("SELECT * FROM vzkazy").all();
console.log(vse);

Kør node server.js (eller et kort testscript). Du ser et array af objekter i konsollen. En fil kaldet web.db vises i din projektmappe – det er hele databasen.

💡

SQL i en nøddeskal: CREATE TABLE = en ny tabel (som et ark i Excel). INSERT = tilføj en række. SELECT = læs data. Spørgsmålstegnene ? i prepare beskytter mod SQL injection – indsæt aldrig brugertekst direkte i en forespørgselsstreng!

Nu er det din tur 💪

  1. Installer better-sqlite3 i din servermappe.
  2. Opret en vzkazy-tabel efter eksemplet (kolonner: id, jmeno, text, vytvoreno).
  3. Indsæt 3 testbeskeder med INSERT.
  4. Stop scriptet, kør det igen, og SELECT én gang til – er dataene stadig der?
  5. Tilføj web.db til .gitignore (i produktion har hver server sin egen database; nogle gange eksporteres den separat).

Tjek: Filen web.db eksisterer, og data forbliver efter en genstart. I næste lektion forbinder vi hele gæstebogen til den gennem en API.

Det tager du med fra denne lektion