首页 / GO / GO的MySql预处理
GO的MySql预处理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了GO的MySql预处理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1675字,纯文字阅读大概需要3分钟。
内容图文
![GO的MySql预处理](/upload/InfoBanner/zyjiaocheng/1333/7b46a31c5b164fa39c8bf81ea8ffe810.jpg)
说明:使用预处理方式执行,是将存储过程预先发送到MySql服务器上执行,之后再传参数上去,可以有效预防数据库的注入。多次循环执行也提高了运行效率。
代码
package main import ( " database/sql " " fmt " _ " github.com/go-sql-driver/mysql " ) // GO链接MySql var Db *sql.DB //连接池对象 func initDB() (err error) { dsn := "username:password@tcp(127.0.0.1:3306)/database?charset=utf8" db, err := sql.Open("mysql", dsn) if err != nil { return err } err = db.Ping() if err != nil { return err } //设置数据库连接池最大连接数 db.SetMaxOpenConns(10) //设置最大链接空闲数 db.SetMaxIdleConns(5) Db = db return nil } type User struct { Id int Name string Age int } //查询 func query(wherestring) { sqlStr := "select Id,Name,Age from User " + where + ";"//执行 rows, err := Db.Query(sqlStr) if err != nil { fmt.Println("查询错误:%v\n", err) return } //释放连接 defer rows.Close() for rows.Next() { var u User //赋值并关闭链接(Scan方法) err := rows.Scan(&u.Id, &u.Name, &u.Age) if err != nil { fmt.Println("查询循环错误") continue } fmt.Printf("Id:%v;Name:%v;Age:%v;\n", u.Id, u.Name, u.Age) } } //预处理(批量插入)func prepareInsert() { sqlStr := `insert into User(Name,Age) value(?,?)` stmt, err := Db.Prepare(sqlStr) if err != nil { fmt.Printf("预处理Sql语句错误:%v\n", err) return } defer stmt.Close() var m = map[string]int{ "张三": 12, "李四": 10, "王五": 11, "赵六": 18, } //循环执行预处理数据for v, k := range m { stmt.Exec(v, k) } } func main() { err := initDB() if err != nil { fmt.Printf("初始化失败,错误%v\n", err) return } fmt.Println("数据库链接成功。") fmt.Println("-----------------------------------") query("where id > 0") prepareInsert() fmt.Println("-----------------------------------") query("where id > 0") }
运行结果:
参考:https://www.bilibili.com/video/BV1fz4y1m7Pm?p=136
原文:https://www.cnblogs.com/dzw159/p/14961846.html
内容总结
以上是互联网集市为您收集整理的GO的MySql预处理全部内容,希望文章能够帮你解决GO的MySql预处理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。