Rappel amical : Cet article prend environ 6 minutes et 41 secondes à lire. Veuillez me donner quelques conseils en cas de lacunes. Merci d'avoir lu. Abonnez-vous à ce site
Le prétraitement est une technologie utilisée par MySQL pour éviter les requêtes fréquentes des clients. Il effectue la même instruction de traitement sur Pre. -chargées dans MySQL, les données des variables d'exploitation sont remplacées par des espaces réservés, réduisant ainsi les requêtes fréquentes vers MySQL et permettant au serveur de fonctionner efficacement.
Ici, le client n'est pas l'architecture C/S entre le front et le backend, mais l'architecture C/S dans laquelle le programme d'arrière-plan exploite le serveur de base de données. De cette façon, vous pouvez brièvement comprendre le programme d'arrière-plan comme. le client vers le serveur MySQL demande et traite les résultats.
Recommandations d'apprentissage associées : Tutoriel du langage GO
Processus de traitement d'exécution SQL ordinaire :
Processus d'exécution du prétraitement :
Dans le langage Go, utilisez la méthode db.Prepare()
pour implémenter le prétraitement :
func (db *DB) Prepare(query string) (*Stmt, error)
Prepare exécute l'instruction SQL de prétraitement et renvoie le pointeur de structure Stmt pour les opérations de liaison de données.
Les opérations de requête utilisent la méthode db.Prepare()
pour déclarer le prétraitement SQL, utilisez stmt.Query()
pour remplacer les espaces réservés par des données pour la requête et les opérations de mise à jour, d'insertion et de suppression à l'aide de stmt.Exec()
.
// 预处理查询数据func prepareQuery() { sqlStr := "SELECT id,name,age FROM user WHERE id > ?" stmt, err := db.Prepare(sqlStr) if err != nil { fmt.Printf("prepare sql failed, err:%v\n", err) return } rows, err := stmt.Query(1) if err != nil { fmt.Printf("exec failed, err:%v\n", err) return } defer rows.Close() for rows.Next() { var u user err := rows.Scan(&u.id, &u.name, &u.age) if err != nil { fmt.Printf("scan data failed, err:%v\n", err) return } fmt.Printf("id:%d, name:%s, age:%d\n", u.id, u.name, u.age) }}
// 预处理更新数据func prepareUpdate() { sqlStr := "UPDATE user SET age = ? WHERE id = ?" stmt, err := db.Prepare(sqlStr) if err != nil { fmt.Printf("prepare sql failed, err:%v\n", err) return } _, err = stmt.Exec(18, 2) if err != nil { fmt.Printf("exec failed, err:%v\n", err) return } fmt.Printf("prepare update data success")}
// 预处理更新数据func prepareUpdate() { sqlStr := "UPDATE user SET age = ? WHERE id = ?" stmt, err := db.Prepare(sqlStr) if err != nil { fmt.Printf("prepare sql failed, err:%v\n", err) return } _, err = stmt.Exec(18, 2) if err != nil { fmt.Printf("exec failed, err:%v\n", err) return } fmt.Printf("prepare update data success")}
// 预处理删除数据func prepareDelete() { sqlStr := "DELETE FROM user WHERE id = ?" stmt, err := db.Prepare(sqlStr) if err != nil { fmt.Printf("prepare sql failed, err:%v\n", err) return } result, err := stmt.Exec(3) n, err := result.RowsAffected() if err != nil { fmt.Printf("delete rows failed, err:%v\n", err) return } if n > 0 { fmt.Printf("delete data success") } else { fmt.Printf("delete data error") }
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!