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

Quelle base de données est équipée du langage Go ?

青灯夜游
Libérer: 2022-12-15 18:41:13
original
7031 Les gens l'ont consulté

Quelle base de données est équipée du langage Go ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.

golang prend en charge une variété de bases de données

1. MySQL

MySQL est un système de gestion de base de données relationnelle. MySQL adopte une politique de double autorisation, qui peut enregistrer des données dans différentes tables, augmentant ainsi la vitesse de la base de données. et flexibilité, avec une petite taille, une vitesse élevée et un faible coût total de possession.

2. Oracle

oracle est un système de gestion de bases de données relationnelles, qui occupe une position de leader dans le domaine des bases de données. Il présente les caractéristiques d'une bonne portabilité, d'une utilisation facile et de fonctionnalités puissantes. , moyens, petits et micro-ordinateurs. L'environnement est une base de données à haute efficacité, bonne fiabilité et haut débit.

3. SQLite

SQLite est une base de données légère qui suit le système de gestion de base de données relationnelle ACID. Elle est conçue pour une utilisation embarquée et peut être utilisée dans de nombreux produits embarqués et peut être utilisée avec C#, PHP, Java, etc. en combinaison avec des langages de programmation.

4. MongoDB

MongoDB est une base de données basée sur le stockage de fichiers distribué. Son objectif est de fournir des solutions de stockage de données évolutives et performantes pour les applications WEB. La structure de données prise en charge par MongoDB est très lâche et prend en charge plusieurs langages de requête. et l'indexation.

5. PostgreSQL

PostgreSQL est un puissant système de gestion de base de données relationnelle objet avec du code open source. Il possède des fonctionnalités telles que des requêtes complexes, des clés étrangères, des déclencheurs, des vues, l'intégrité des transactions et le contrôle de concurrence multi-versions. La fonction exécute le programme d'instructions côté serveur de base de données et l'utilisateur peut personnaliser la méthode d'indexation.

6. SQL Sever

SQL Sever est un système de gestion de base de données relationnelle. Il présente les avantages d'une utilisation facile, d'une bonne évolutivité et d'un degré élevé d'intégration des logiciels associés. Il peut fournir des performances de stockage plus sûres et plus fiables. , vous pouvez créer et gérer des applications de données hautement disponibles et performantes pour l'entreprise.

golang exploite la base de données MySQL

Ce qui suit présente principalement l'utilisation de MySQL dans le langage Go sous les aspects d'ajout, de suppression, de modification et autres

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

Utilisez SQL. Fonction Open() pour ouvrir la connexion à la base de données. Le format de la chaîne de connexion à la base de données (dsn) est le suivant :

admin:123456@tcp(10.2.1.5)/irisapp
Copier après la connexion

Le code est le suivant :

func (f *mysql_db) mysql_open() {
    db, err := sql.Open("mysql", dbusername+":"+dbpassword+"@tcp("+dbhostsip+")/"+dbname)
    if err != nil {
        fmt.Println("链接失败")
    }
    fmt.Println("链接成功")
    f.db = db
}
Copier après la connexion

2. Insérez

func (f *mysql_db) mysql_insert() { //insert  添加数据
    fmt.Println("开始插入")
    stmt, err := f.db.Prepare("INSERT INTO depart(departName,memo) VALUES(?,?)")
    //defer stmt.Close()
    if err != nil {
        fmt.Println("插入失败")
        return
    }
    stmt.Exec("dd", "adadcccda")
    fmt.Println("插入成功")
}
Copier après la connexion

3. Requête

func (f *mysql_db) mysql_select(sql_data string) {   //select 查询数据
    fmt.Println("sql:", sql_data)
    rows, err := f.db.Query(sql_data)
    if err != nil {
        fmt.Println("查询失败")
    }
    for rows.Next() {
        var departID int
        var departName string
        var memo string
        err = rows.Scan(&departID, &departName, &memo)
        if err != nil {
            panic(err)
        }
        fmt.Println("departName:", departName)
    }
}
Copier après la connexion

4. Mettre à jour

func (f *mysql_db) mysql_update() { //update  修改数据
    stmt, err := f.db.Prepare("update depart set departName=?,memo =? where departId=?")
    //defer stmt.Close()
    if err != nil {
        //错误处理
    }
    result,_ := stmt.Exec("aa","asdfadsadsfa",1)
    if result == nil {
        fmt.Println("修改失败")
    }
    affect_count,_ := result.RowsAffected()    //返回影响的条数,注意有两个返回值
    fmt.Println("%v",affect_count)
}
Copier après la connexion

5. Supprimer

func (f *mysql_db) mysql_delete() { //delete  删除数据
    stmt, err := f.db.Prepare("delete from depart where departId=?")
    //defer stmt.Close()
    if err != nil {
        //错误处理
    }
    stmt.Exec(2)     //不返回任何结果
    fmt.Println("删除成功")
}
Copier après la connexion

6. Choses

func (f *mysql_db) mysql_tran(){
    //事务
    tx,err := f.db.Begin()        //声明一个事务的开始
    if err != nil {
        fmt.Println(err)
        return
    }
    insert_sql := "insert into depart (departName,memo) VALUES(?,?)"
    insert_stmt,insert_err := tx.Prepare(insert_sql)
    if insert_err != nil {
        fmt.Println(insert_err)
        return
    }
    insert_res,insert_err := insert_stmt.Exec("ff","ff")
    last_insert_id,_ := insert_res.LastInsertId()
    fmt.Println(last_insert_id)
    // defer tx.Rollback()            //回滚之前上面的last_login_id是有的,但在回滚后该操作没有被提交,被回滚了,所以上面打印的Last_login_id的这条数据是不存在与数据库表中的
    tx.Commit()                        //这里提交了上面的操作,所以上面的执行的sql 会在数据库中产生一条数据
}
Copier après la connexion

Appeler

func main() {
    db := &mysql_db{}
    db.mysql_open()
    db.mysql_insert()
    db.mysql_update()
    db.mysql_delete()
    db.mysql_tran()
    db.mysql_select("select departID,departName,memo from depart")
    db.mysql_close() //关闭
}
Copier après la connexion

Le résultat après le démarrage est le suivant : ee

Code complet

D:\Go_Path\go\src\mysqldemo>go run mysqldemo.go
链接成功
开始插入
插入成功
0
删除成功
10
sql: select departID,departName,memo from depart
departName: aa
departName: dd
departName: dd
departName: dd
departName: dd
departName: dd
departName: ff
departName: dd
departName: ff
Copier après la connexion

Résumé

1. Prend en charge les expressions de préparation, qui peuvent être utilisées pour optimiser les requêtes SQL afin d'améliorer les performances, réduisant ainsi le risque d'injection SQL, db.Prepare() et tx.Prepare prennent tous deux en charge les expressions préparées.

2. LastInsertId() Obtenir l'identifiant du premier élément inséré

3. RowsAffected() Obtenir le nombre d'éléments affectés/insérés

4. Voici une brève introduction à l'utilisation de base de MySQL dans le développement du langage Go, en fait, dans le processus de développement actuel, les frameworks tiers liés à l'ORM sont encore principalement utilisés, mais les principes sous-jacents doivent encore être appris.

Pour plus de connaissances sur le langage Go, veuillez prêter attention à la colonne

Tutoriel sur le langage Go sur le site Web PHP chinois.

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!

Étiquettes associées:
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