Maison  >  Article  >  développement back-end  >  Introduction aux opérations Golang MySQL

Introduction aux opérations Golang MySQL

尚
avant
2020-02-26 17:39:252954parcourir

Go (également connu sous le nom de Golang) est un langage de programmation concurrent, compilé et fortement typé, doté de capacités de récupération de place développées par Google. Ci-dessous, je présenterai quelques opérations sur MySQL à partir de la colonne Go Getting Started Tutorial.

Introduction aux opérations Golang MySQL

go exploite la base de données mysql. La bibliothèque utilisée est go-sql-driver/mysql Installez directement go get

go get -u github.com/go-sql-driver/mysql

sql.DB<.>

Les fonctions disponibles pour le type DB sont :

1. Requête (chaîne c, interface args{}…) (*Lignes, erreur), couramment utilisée dans les instructions SELECT

2. Exec(c string, args interface{}…) (*Rows, erreur), couramment utilisé avec UPDATE et INSERT

3. Prepare(c string) (*Stmt, erreur), autre. les instructions peuvent également être utilisées pour exécuter l'instruction ci-dessus et renvoyer le pointeur Stmt

sql.Stmt

Stmt est une instruction préparée qui peut exécuter des opérations d'instruction de base de données communes. les fonctions sont :

Exec(args interface{} …) (Résultat, erreur), étant donné les paramètres et exécute l'instruction préparée, puis renvoie le résultat total de l'instruction

//...
	stmt, err := db.Perpare("INSERT INTO User(user,pwd) VALUES (?, ?)")
	if err != nil {
		panic(err)
	}
	defer stmt.Close()
	_, err := stmt.Exec("laoli", "123456")
	if err != nil {
		panic(err)
	}
//...
//...
	stmt, err := db.Perpare("DELETE FROM User")
	if err != nil {
		panic(err)
	}
	defer stmt.Close()
	_, err := stmt.Exec()
	if err != nil {
		panic(err)
	}

Query(args interface{} …) ( *Rows, error), étant donné les paramètres et exécute l'instruction préparée, renvoyant les résultats de la ligne, par exemple, l'opération SELECT doit être appelée avec cette fonction.

sql.Rows

Rows est la table renvoyée par l'exécution de l'instruction SQL. Rows occupera le cache dans Rows.Next(), si false est renvoyé, il. sera automatiquement libéré du cache.

Regardez le code source :

// 源码
func (rs *Rows) Next() bool {
	var doClose, ok bool
	withLock(rs.closemu.RLocker(), func() {
		doClose, ok = rs.nextLocked()
	})
	if doClose {
		rs.Close() //在这里释放掉了
	}
	return ok
}

Exemple :

package main

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

var db *sql.DB
func mian() {
	db = sql.Open("mysql", "root:123456@tcp(127.0.0.1)/test")
	if err := db.Ping(); err != nil {
		panic(err)
	}
}

func Insert() {
	_, err := db.Exec("INSERT INTO User(user, pwd) VALUE (?, ?)", "laowang", "123456")
	if err != nil {
		panic(err)
	}
}

func SelectRow() {
	rows, err := db.Query("SELECT * FROM User WHERE user=?", "laowang")
	if err != nil {
		panic(err)
	}
	//defer rows.Close() //如果后面代码没有循环调用rows.Next(),就需要手动在这里释放一下,不然会一直占用缓存
	var user string
	var pwd string
	for rows.Next() {
		row.Scan(&user, &pwd)
	}
	print(user, pwd)
}

Pour plus de connaissances sur le langage go, veuillez faire attention à la colonne

tutoriel sur le langage go sur PHP chinois site web.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer