En aquest tema, aprendrem a realitzar operacions CRUD (Create, Read, Update, Delete) en una base de dades utilitzant Go. Aquestes operacions són fonamentals per a la majoria d'aplicacions que treballen amb dades persistents.
Objectius
- Entendre què són les operacions CRUD.
- Aprendre a connectar-se a una base de dades des de Go.
- Implementar operacions de creació, lectura, actualització i eliminació en una base de dades.
Requisits Previs
- Coneixements bàsics de Go.
- Coneixements bàsics de bases de dades SQL.
- Haver completat el tema anterior sobre connexió a una base de dades.
Contingut
Introducció a les Operacions CRUD
Les operacions CRUD són les operacions bàsiques que es poden realitzar en una base de dades. Aquestes operacions són:
- Create (Crear): Inserir noves dades a la base de dades.
- Read (Llegir): Recuperar dades de la base de dades.
- Update (Actualitzar): Modificar dades existents a la base de dades.
- Delete (Eliminar): Eliminar dades de la base de dades.
Configuració de la Base de Dades
Abans de començar amb les operacions CRUD, necessitem configurar la connexió a la base de dades. Utilitzarem una base de dades SQLite per a aquest exemple.
Exemple de Connexió a SQLite
package main import ( "database/sql" "log" _ "github.com/mattn/go-sqlite3" ) func main() { db, err := sql.Open("sqlite3", "./example.db") if err != nil { log.Fatal(err) } defer db.Close() // Creació de la taula createTableSQL := `CREATE TABLE IF NOT EXISTS users ( "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "name" TEXT, "age" INTEGER );` _, err = db.Exec(createTableSQL) if err != nil { log.Fatal(err) } }
Creació d'Operacions CRUD
Create (Crear)
Per inserir noves dades a la base de dades, utilitzem l'operació INSERT
.
Exemple de Codi
func createUser(db *sql.DB, name string, age int) { insertUserSQL := `INSERT INTO users (name, age) VALUES (?, ?)` statement, err := db.Prepare(insertUserSQL) if err != nil { log.Fatal(err) } defer statement.Close() _, err = statement.Exec(name, age) if err != nil { log.Fatal(err) } log.Println("User created successfully") }
Read (Llegir)
Per recuperar dades de la base de dades, utilitzem l'operació SELECT
.
Exemple de Codi
func getUsers(db *sql.DB) { row, err := db.Query("SELECT id, name, age FROM users") if err != nil { log.Fatal(err) } defer row.Close() for row.Next() { var id int var name string var age int row.Scan(&id, &name, &age) log.Println(id, name, age) } }
Update (Actualitzar)
Per modificar dades existents a la base de dades, utilitzem l'operació UPDATE
.
Exemple de Codi
func updateUser(db *sql.DB, id int, name string, age int) { updateUserSQL := `UPDATE users SET name = ?, age = ? WHERE id = ?` statement, err := db.Prepare(updateUserSQL) if err != nil { log.Fatal(err) } defer statement.Close() _, err = statement.Exec(name, age, id) if err != nil { log.Fatal(err) } log.Println("User updated successfully") }
Delete (Eliminar)
Per eliminar dades de la base de dades, utilitzem l'operació DELETE
.
Exemple de Codi
func deleteUser(db *sql.DB, id int) { deleteUserSQL := `DELETE FROM users WHERE id = ?` statement, err := db.Prepare(deleteUserSQL) if err != nil { log.Fatal(err) } defer statement.Close() _, err = statement.Exec(id) if err != nil { log.Fatal(err) } log.Println("User deleted successfully") }
Exercicis Pràctics
- Crear un Usuari: Escriu una funció que insereixi un nou usuari a la base de dades.
- Llegir Usuaris: Escriu una funció que recuperi tots els usuaris de la base de dades i els imprimeixi.
- Actualitzar un Usuari: Escriu una funció que actualitzi el nom i l'edat d'un usuari existent.
- Eliminar un Usuari: Escriu una funció que elimini un usuari de la base de dades.
Solucions
Crear un Usuari
func main() { db, err := sql.Open("sqlite3", "./example.db") if err != nil { log.Fatal(err) } defer db.Close() createUser(db, "John Doe", 30) }
Llegir Usuaris
func main() { db, err := sql.Open("sqlite3", "./example.db") if err != nil { log.Fatal(err) } defer db.Close() getUsers(db) }
Actualitzar un Usuari
func main() { db, err := sql.Open("sqlite3", "./example.db") if err != nil { log.Fatal(err) } defer db.Close() updateUser(db, 1, "Jane Doe", 25) }
Eliminar un Usuari
func main() { db, err := sql.Open("sqlite3", "./example.db") if err != nil { log.Fatal(err) } defer db.Close() deleteUser(db, 1) }
Conclusió
En aquest tema, hem après a realitzar operacions CRUD en una base de dades utilitzant Go. Aquestes operacions són fonamentals per a qualsevol aplicació que treballi amb dades persistents. Hem vist com connectar-nos a una base de dades, crear taules i realitzar operacions de creació, lectura, actualització i eliminació de dades.
En el següent tema, explorarem com utilitzar un ORM (Object-Relational Mapping) per simplificar aquestes operacions.
Curs de Programació en Go
Mòdul 1: Introducció a Go
- Introducció a Go
- Configuració de l'Entorn Go
- El Teu Primer Programa en Go
- Sintaxi i Estructura Bàsiques
Mòdul 2: Conceptes Bàsics
Mòdul 3: Estructures de Dades Avançades
Mòdul 4: Gestió d'Errors
Mòdul 5: Concurrència
Mòdul 6: Temes Avançats
Mòdul 7: Desenvolupament Web amb Go
Mòdul 8: Treballant amb Bases de Dades
Mòdul 9: Desplegament i Manteniment
- Construcció i Desplegament d'Aplicacions Go
- Registre
- Monitorització i Optimització del Rendiment
- Millors Pràctiques de Seguretat