Maison >développement back-end >Golang >Quelle base de données Golang utilise-t-il ?
Quelle base de données Golang utilise-t-il
Aujourd'hui, je vais brièvement présenter comment Golang utilise la base de données MySQL ? Étant donné que Go lui-même ne fournit pas de pilote de base de données spécifique, il fournit uniquement une interface et une gestion du pilote. Chaque pilote de base de données doit être implémenté par un tiers et enregistré dans la gestion des pilotes dans Go. Il existe plusieurs pilotes mysql sur github. Celui que j'ai choisi ici :
https://github.com/go-sql-driver/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 Se connecter à la base de données
Utiliser. la fonction sql.Open() Ouvrez 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
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 }
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("插入成功") }
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) } }
4. >5. Supprimer
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) }
6. Choses
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("删除成功") }
Appelez
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 会在数据库中产生一条数据 }
et la sortie après le démarrage est comme suit :
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() //关闭 }
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
Résumé
Prend en charge les expressions de préparation, qui peuvent être utilisées pour optimiser. Requêtes SQL pour améliorer les performances et réduire le risque d'injection SQL, db.Prepare() et tx.Prepare prennent en charge les expressions préparées. 2. LastInsertId() Obtenez l'identifiant du premier élément inséré
3. RowsAffected() Obtenez le nombre d'éléments concernés/insérés
4. Brève introduction à go L'utilisation de base de MySQL dans le développement du langage Go dans le développement du langage En fait, dans le processus de développement réel, les frameworks tiers liés à l'ORM sont 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 Gosur 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!