이 사이트를 구독하세요
PreprocessingMySQL에서 클라이언트의 빈번한 요청을 방지하기 위해 사용하는 기술입니다. MySQL에서 동일한 처리 문을 미리 로드하고 작업 변수 데이터를 자리 표시자로 대체하여 MySQL에 대한 빈번한 요청을 줄입니다. 서버를 효율적으로 운영할 수 있습니다.
GO 언어 튜토리얼
클라이언트에서 SQL 문을 준비합니다.
SQL 문을 MySQL 서버로 보냅니다. MySQL 서버 명령문;
서버는 실행 결과를 클라이언트에 반환합니다.SQL 문을 실행할 때 먼저 동일한 명령과 구조 부분을 MySQL 서버에 보내고 MySQL 서버가 수행하도록 합니다. 사전 처리(이번에는 SQL 문이 실제로 실행되지 않음)
SQL 문의 구조적 무결성을 보장하기 위해 처음으로 SQL 문을 보낼 때 Represented by data 자리 표시자를 사용하세요. 데이터 부분은 MySQL 서버로 전송되고 MySQL 서버는 SQL 문의 자리 표시자를 대체합니다.db.Prepare()
메서드를 사용하여 전처리를 구현합니다. func (db *DB) Prepare(query string) (*Stmt, error)
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) }}
db.Prepare()
方法实现预处理:
// 预处理更新数据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")}
Prepare 执行预处理 SQL 语句,并返回 Stmt 结构体指针,进行数据绑定操作。
查询操作使用 db.Prepare()
方法声明预处理 SQL,使用 stmt.Query()
将数据替换占位符进行查询,更新、插入、删除操作使用 stmt.Exec()
// 预处理更新数据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 중국어 웹사이트의 기타 관련 기사를 참조하세요!