フレンドリマインダー: この記事を読むのに約 6 分 41 秒かかります。欠点があればアドバイスをお願いします。読んでいただきありがとうございます。 このサイトを購読する
前処理は、頻繁なクライアント要求を防ぐために MySQL で使用されるテクノロジです。 MySQL にプリロードされている操作変数データはプレースホルダーに置き換えられるため、MySQL への頻繁なリクエストが減り、サーバーが効率的に実行されます。
ここでクライアントとはフロントエンドとバックエンドの間のC/Sアーキテクチャではなく、バックグラウンドプログラムがデータベースサーバを動作させるC/Sアーキテクチャを指します。クライアントから MySQL へ、サーバーは結果をリクエストして処理します。
#関連する学習の推奨事項:
通常の SQL 実行処理プロセス:
前処理実行プロセス:
メソッドを使用して前処理を実装します。
func (db *DB) Prepare(query string) (*Stmt, error)
Prepare は、前処理された SQL ステートメントを実行し、データ バインディング操作の Stmt 構造体ポインターを返します。
クエリ操作では、db.Prepare()
メソッドを使用して前処理 SQL を宣言し、stmt.Query() を使用してデータをクエリ、更新用のプレースホルダーに置き換えます。 、挿入。 の場合は、
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") }
以上がMySQL の前処理を操作するための Go 言語を学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。