Maison > développement back-end > Golang > le corps du texte

Un article pour voir comment utiliser Golang pour implémenter un SGBD

PHPz
Libérer: 2023-04-11 11:48:35
original
684 Les gens l'ont consulté

Ces dernières années, de nombreuses entreprises ont commencé à transférer des bases de données vers le cloud, ce qui offre de nouvelles opportunités pour la mise en œuvre de SGBD (Database Management System). Dans le même temps, Golang (également connu sous le nom de Go) a également reçu de plus en plus d'attention en raison de sa grande efficacité et de sa faible latence. Alors, comment utiliser Golang pour implémenter un SGBD ?

Avant de commencer, présentons brièvement Golang. Go est un langage de programmation statiquement fortement typé développé par Google. Sa syntaxe est similaire au langage C, mais il supprime de nombreux détails fastidieux, le rendant plus concis et plus facile à lire et à écrire. Golang possède également des fonctionnalités avancées telles que les coroutines, le garbage collection, les interfaces et l'intégration de types, qui peuvent considérablement améliorer l'efficacité de la programmation.

Ensuite, voyons comment implémenter un SGBD simple à l'aide de Golang.

1. Concevoir la structure de la base de données

Avant de mettre en œuvre le SGBD, nous devons d'abord concevoir la structure de la base de données. Supposons que nous souhaitions concevoir une table d'adhésion, qui comprend l'ID du membre, le nom, le sexe, l'anniversaire, le numéro de téléphone portable, l'adresse e-mail et d'autres champs. Ensuite, nous pouvons utiliser la structure (struct) de Golang pour définir la structure de la base de données. Le code spécifique est le suivant :

type Member struct {
    ID       int
    Name     string
    Gender   string
    Birthday string
    Phone    string
    Email    string
}
Copier après la connexion

2. Connectez-vous à la base de données

Dans Golang, la connexion à la base de données nécessite l'utilisation des bibliothèques tierces officiellement fournies - "database/sql" et "database/sql/driver". . Cette bibliothèque fournit une interface SQL commune pouvant interagir avec diverses bases de données relationnelles.

Nous devons d'abord appeler la fonction Open dans la bibliothèque "database/sql" pour ouvrir une connexion à la base de données. Ici, nous prenons la base de données MySQL comme exemple. Le code spécifique est le suivant :

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/test")
    if err != nil {
        // 异常处理
    }
}
Copier après la connexion

Dans le code ci-dessus, nous utilisons la fonction Open dans "database/sql" pour ouvrir une connexion à la base de données MySQL, dans laquelle le premier paramètre est passé. dans la chaîne MySQL, le deuxième paramètre transmet le nom d'utilisateur et le mot de passe.

3. Créer une table

En nous connectant à la base de données, nous pouvons utiliser Golang pour écrire des instructions SQL afin de créer des tables sur la base de données MySQL. Le code spécifique est le suivant :

_, err := db.Exec(`CREATE TABLE IF NOT EXISTS members (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    gender VARCHAR(10) NOT NULL,
    birthday DATE NOT NULL,
    phone VARCHAR(20) NOT NULL,
    email VARCHAR(50) NOT NULL,
    PRIMARY KEY (id))`)
if err != nil {
    // 异常处理
}
Copier après la connexion

Le code ci-dessus exécute les instructions SQL en appelant la fonction Exec dans la bibliothèque "database/sql", et crée une table nommée membres, qui contient l'identifiant, le nom, le sexe, l'anniversaire, le téléphone et Là il y a 6 champs pour le courrier électronique. Notez que l'incrémentation automatique est utilisée sur le champ id.

4. Stocker les données

Maintenant, nous avons créé avec succès une table nommée membres dans la base de données MySQL. Ensuite, nous devons stocker certaines données dans la table. Continuez simplement à utiliser Golang pour écrire des instructions SQL. L'exemple de code est le suivant :

member := Member{
    ID:       1,
    Name:     "张三",
    Gender:   "男",
    Birthday: "1990-01-01",
    Phone:    "13800138000",
    Email:    "zhangsan@example.com",
}
_, err = db.Exec("INSERT INTO members(id, name, gender, birthday, phone, email) VALUES (?, ?, ?, ?, ?, ?)", member.ID, member.Name, member.Gender, member.Birthday, member.Phone, member.Email)
if err != nil {
    // 异常处理
}
Copier après la connexion

5. Interroger les données

En plus de stocker les données, nous devons également prendre en charge l'interrogation des données de la base de données. Golang fournit des types de lignes et de lignes pour représenter respectivement des ensembles de résultats de plusieurs éléments de données et d'un seul élément de données. L'exemple de code est le suivant :

rows, err := db.Query("SELECT * FROM members")
if err != nil {
    // 异常处理
}
defer rows.Close()

var members []Member
for rows.Next() {
    var member Member
    if err := rows.Scan(&member.ID, &member.Name, &member.Gender, &member.Birthday, &member.Phone, &member.Email); err != nil {
        // 异常处理
    }
    members = append(members, member)
}
Copier après la connexion

Le code ci-dessus interroge les données de la base de données et parcourt le jeu de résultats en appelant respectivement les fonctions Query et Next dans la bibliothèque "database/sql", puis place les résultats de la requête dans un type Member. tranche.

6. Résumé

Jusqu'à présent, nous avons implémenté un SGBD simple utilisant Golang, qui comprend la connexion à la base de données MySQL, la création de tables de données, le stockage des données et l'interrogation des données. Le code ci-dessus peut également être utilisé comme connaissances de base lors de l'apprentissage futur du « Golang et du développement de bases de données ». Pour les applications dans des environnements de production réels, nous avons besoin de conceptions plus complexes pour fournir des fonctions plus complètes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal