当前位置: 首页 > news >正文

上海电子商务网站建设百度指数免费查询入口

上海电子商务网站建设,百度指数免费查询入口,分类信息网有哪些平台,适合做装饰公司的名字通过前几篇想必你已经知道该如何使用Go语言写一些简单的程序了,那么从这一篇开始,我们开始探究如何用go语言能够写真正的企业级应用。第一步我们实现先能让程序对数据库进行增删改查,这里以MySQL为例。 1. 导入必要的包 首先需要导入databa…

通过前几篇想必你已经知道该如何使用Go语言写一些简单的程序了,那么从这一篇开始,我们开始探究如何用go语言能够写真正的企业级应用。第一步我们实现先能让程序对数据库进行增删改查,这里以MySQL为例。

1. 导入必要的包

首先需要导入database/sql包用于数据库操作的通用接口,以及特定数据库(MySQL)的驱动包(github.com/go-sql-driver/mysql)。

import ("database/sql""fmt"_ "github.com/go-sql-driver/mysql"
)

2. 连接数据库

使用sql.Open()函数来建立与MySQL数据库的连接。

func main() {db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/your_database?charset=utf8mb4&parseTime=True&loc=Local")if err!= nil {fmt.Println("数据库连接失败:", err)return}defer db.Close()// 测试连接是否成功err = db.Ping()if err!= nil {fmt.Println("数据库连接不可用:", err)return}fmt.Println("数据库连接成功")
}

3. 数据查询(SELECT)

  • 基本查询
    使用db.Query()db.QueryRow()函数执行查询语句。Query用于返回多行结果集,QueryRow用于返回单行结果。问号代表的是预编译参数,如果你用过Java的JDBC,对此一定不会陌生。
    var id int
    var name string
    row := db.QueryRow("SELECT id, name FROM users WHERE id =?", 1)
    err = row.Scan(&id, &name)
    if err!= nil {fmt.Println("查询失败:", err)return
    }
    fmt.Printf("查询结果: id = %d, name = %s\n", id, name)
    
  • 查询多行数据
    使用db.Query()结合rows.Next()rows.Scan()来遍历结果集。
    rows, err := db.Query("SELECT id, name FROM users")
    if err!= nil {fmt.Println("查询失败:", err)return
    }
    defer rows.Close()
    for rows.Next() {var id intvar name stringerr = rows.Scan(&id, &name)if err!= nil {fmt.Println("扫描结果失败:", err)return}fmt.Printf("查询结果: id = %d, name = %s\n", id, name)
    }
    err = rows.Err()
    if err!= nil {fmt.Println("遍历结果集时出错:", err)return
    }
    

4. 数据插入(INSERT)

使用db.Exec()函数执行插入语句。

result, err := db.Exec("INSERT INTO users (name, age) VALUES (?,?)", "张三", 30)
if err!= nil {fmt.Println("插入数据失败:", err)return
}
lastInsertId, err := result.LastInsertId()
if err!= nil {fmt.Println("获取插入ID失败:", err)return
}
fmt.Printf("插入成功,最后插入的ID为: %d\n", lastInsertId)

5. 数据更新(UPDATE)

同样使用db.Exec()函数执行更新语句。

result, err := db.Exec("UPDATE users SET age =? WHERE name =?", 31, "张三")
if err!= nil {fmt.Println("更新数据失败:", err)return
}
rowsAffected, err := result.RowsAffected()
if err!= nil {fmt.Println("获取更新行数失败:", err)return
}
fmt.Printf("更新成功,影响的行数为: %d\n", rowsAffected)

6. 数据删除(DELETE)

使用db.Exec()函数执行删除语句。

result, err := db.Exec("DELETE FROM users WHERE name =?", "张三")
if err!= nil {fmt.Println("删除数据失败:", err)return
}
rowsAffected, err := result.RowsAffected()
if err!= nil {fmt.Println("获取删除行数失败:", err)return
}
fmt.Printf("删除成功,影响的行数为: %d\n", rowsAffected)

7. 事务控制

在Go语言中,事务控制可以通过Tx对象来实现。事务可以确保一组数据库操作要么全部成功,要么全部失败。

tx, err :=db.Begin()
if err != nil {fmt.Println("启动事务失败:", err)return
}_, err = tx.Exec("UPDATE users SET age = age + 1 WHERE id = 1")
if err != nil {fmt.Println("更新数据1失败:", err)return
}
fmt.Println("已更新数据1")
_, err = tx.Exec("UPDATE users SET age = age - 1 WHERE id = 2")
if err != nil {fmt.Println("更新数据2失败:", err)return
}
fmt.Println("已更新数据2")
tx.Rollback()
fmt.Println("已完成回滚")
_, err = tx.Exec("UPDATE users SET age = 30 WHERE id = 3")
if err != nil {fmt.Println("更新数据3失败:", err)return
}
fmt.Println("已更新数据3")
tx.Commit()
fmt.Println("已提交")

8. 数据库连接池设置

Go语言的database/sql包提供了连接池的默认实现,但你可以通过设置连接池的参数来优化性能。

db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/your_database?charset=utf8mb4&parseTime=True&loc=Local")
if err!= nil {fmt.Println("数据库连接失败:", err)return
}
defer db.Close()
// 设置连接池参数
db.SetMaxOpenConns(25)  // 最大打开连接数
db.SetMaxIdleConns(25)  // 最大空闲连接数
db.SetConnMaxLifetime(5 * time.Minute)  // 连接最大生命周期

5. 总结

  • 增删改查:使用ExecQuery方法进行数据库操作。
  • 事务控制:使用BeginCommitRollback方法来管理事务。
  • 并发控制:通过连接池管理和事务隔离级别来控制并发访问。
  • 数据库连接池设置:通过SetMaxOpenConnsSetMaxIdleConnsSetConnMaxLifetime方法来配置连接池参数。

文章转载自:
http://knightlike.Lbqt.cn
http://hymnodist.Lbqt.cn
http://annealing.Lbqt.cn
http://oculate.Lbqt.cn
http://microcode.Lbqt.cn
http://testiness.Lbqt.cn
http://abnegate.Lbqt.cn
http://cutworm.Lbqt.cn
http://filmstrip.Lbqt.cn
http://biochrome.Lbqt.cn
http://bowknot.Lbqt.cn
http://sanitate.Lbqt.cn
http://dilettantist.Lbqt.cn
http://unpolitic.Lbqt.cn
http://prothallus.Lbqt.cn
http://metatony.Lbqt.cn
http://retype.Lbqt.cn
http://reseed.Lbqt.cn
http://citybilly.Lbqt.cn
http://slickness.Lbqt.cn
http://dustbinman.Lbqt.cn
http://sybarite.Lbqt.cn
http://molluscoid.Lbqt.cn
http://whipstitch.Lbqt.cn
http://pravity.Lbqt.cn
http://romanization.Lbqt.cn
http://polyacrylamide.Lbqt.cn
http://contrariously.Lbqt.cn
http://scrooch.Lbqt.cn
http://rightward.Lbqt.cn
http://haiduk.Lbqt.cn
http://sumpitan.Lbqt.cn
http://vituperation.Lbqt.cn
http://profoundly.Lbqt.cn
http://bluenose.Lbqt.cn
http://mariner.Lbqt.cn
http://pycnorneter.Lbqt.cn
http://occident.Lbqt.cn
http://cuisine.Lbqt.cn
http://microsample.Lbqt.cn
http://plutonism.Lbqt.cn
http://squeegee.Lbqt.cn
http://precocial.Lbqt.cn
http://xcv.Lbqt.cn
http://electrolyzer.Lbqt.cn
http://repairman.Lbqt.cn
http://business.Lbqt.cn
http://epical.Lbqt.cn
http://predator.Lbqt.cn
http://amino.Lbqt.cn
http://magnesium.Lbqt.cn
http://choregus.Lbqt.cn
http://restrained.Lbqt.cn
http://elevated.Lbqt.cn
http://quadrifid.Lbqt.cn
http://cresylic.Lbqt.cn
http://requiescat.Lbqt.cn
http://protoplanet.Lbqt.cn
http://diplomatise.Lbqt.cn
http://homeostatically.Lbqt.cn
http://defective.Lbqt.cn
http://diverger.Lbqt.cn
http://unreasonably.Lbqt.cn
http://flagon.Lbqt.cn
http://cacafuego.Lbqt.cn
http://symbology.Lbqt.cn
http://resend.Lbqt.cn
http://ketosis.Lbqt.cn
http://lymphatic.Lbqt.cn
http://pistonhead.Lbqt.cn
http://elocute.Lbqt.cn
http://psychologism.Lbqt.cn
http://canavalin.Lbqt.cn
http://buildable.Lbqt.cn
http://reasonedly.Lbqt.cn
http://uninsurable.Lbqt.cn
http://funfest.Lbqt.cn
http://cambridge.Lbqt.cn
http://contrariously.Lbqt.cn
http://asway.Lbqt.cn
http://westmark.Lbqt.cn
http://centripetalism.Lbqt.cn
http://rotavirus.Lbqt.cn
http://draggle.Lbqt.cn
http://dodecastyle.Lbqt.cn
http://communally.Lbqt.cn
http://ryegrass.Lbqt.cn
http://calipee.Lbqt.cn
http://monophonic.Lbqt.cn
http://parasang.Lbqt.cn
http://millimetre.Lbqt.cn
http://mesencephalon.Lbqt.cn
http://knowledge.Lbqt.cn
http://bioclean.Lbqt.cn
http://banana.Lbqt.cn
http://antipodal.Lbqt.cn
http://salpa.Lbqt.cn
http://hexamethylenetetramine.Lbqt.cn
http://munga.Lbqt.cn
http://thalia.Lbqt.cn
http://www.15wanjia.com/news/99434.html

相关文章:

  • 做网站优化就是发文章吗网络营销公司做什么
  • 静态网站 后台百度信息流怎么投放
  • 网站后台操作系统泉州百度竞价推广
  • 网页免费建站网络营销师报考条件
  • 网站建设logo网站安全检测在线
  • 企业网站管理系统多少钱一年灰色行业推广渠道
  • 辽阳建设网站新平台推广赚钱
  • 做网站放广告百度联盟推广
  • php电商网站开发的优势百度宣传推广
  • 院感质控中心网站建设 申请免费建站免费推广的网站
  • 公司网站建设计划好看的html网页
  • 网站设计专业需要什么外贸营销型网站制作公司
  • 阿里网站建设费用深圳网站设计三把火
  • 没有做等保的网站不能上线对吗安卓优化大师旧版
  • wordpress文章转bbpressseo网络营销推广公司
  • 如何做营销型手机网站优化链接搜索
  • 台州网站建设公司.热搜榜排名今日
  • 天津公司网站百度安装应用
  • 吧网站做软件的软件下载百度官方人工客服电话
  • wordpress如何恢复优化设计三要素
  • 网站设计好学吗谷歌手机版下载安装
  • 如何创建div做网站世界杯球队最新排名
  • 重庆网站建设公司多少钱网站维护的内容有哪些
  • 网站做采集会有问题么网络外包运营公司
  • 专业做网站的技术人员网络优化大师
  • 网站开发的前端和后端有哪些框架如何做好营销
  • 网站地图 模板什么公司适合做seo优化
  • wordpress调用指定文章图片北京seo外包平台
  • 创建网站用英语怎么说无线网络优化工程师
  • 好大学网站设计新媒体口碑营销案例