前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Go 语言的 database/sql 库操作数据库

使用 Go 语言的 database/sql 库操作数据库

作者头像
运维开发王义杰
发布2023-08-21 13:37:56
2940
发布2023-08-21 13:37:56
举报
文章被收录于专栏:运维开发王义杰

Go语言中的database/sql库提供了一套通用的接口来与SQL数据库进行交互。以下内容将详细介绍如何使用这个库。

1. 引入驱动

首先,你需要导入合适的数据库驱动。例如,要操作MySQL数据库,你需要以下导入:

代码语言:javascript
复制
import (
  "database/sql"
  _ "github.com/go-sql-driver/mysql"
)

注意,此处的_表示我们导入但不直接使用该包,仅初始化其侧效应。

2. 建立连接

使用sql.Open函数建立与数据库的连接:

代码语言:javascript
复制
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
if err != nil {
    log.Fatal(err)
}
defer db.Close()

3. 执行查询

使用QueryQueryRow执行SQL查询:

代码语言:javascript
复制
rows, err := db.Query("SELECT id, name FROM users")
if err != nil {
  log.Fatal(err)
}
defer rows.Close()
4. 处理结果

使用Rows对象的Scan方法提取查询结果:

代码语言:javascript
复制
for rows.Next() {
  var id int
  var name string
  err := rows.Scan(&id, &name)
  if err != nil {
    log.Fatal(err)
  }
  fmt.Println(id, name)
}
(*sql.Rows).Next方法用于迭代查询结果集的下一行。
当还有下一行数据时,该方法返回true,并可以使用Scan方法来提取该行
的数据。当没有更多行时,返回false。


5. 执行非查询命令

使用Exec方法执行非查询SQL命令:

代码语言:javascript
复制
_, err := db.Exec("INSERT INTO users(name) VALUES('John')")
if err != nil {
  log.Fatal(err)
}

6. 事务处理

通过BeginCommitRollback来执行事务操作:

代码语言:javascript
复制
tx, err := db.Begin()
if err != nil {
  log.Fatal(err)
}
_, err = tx.Exec("INSERT INTO users(name) VALUES('John')")
if err != nil {
  tx.Rollback()
  log.Fatal(err)
}
tx.Commit()

总结

database/sql库为Go开发人员提供了一套强大的工具来进行数据库操作。掌握其基础用法有助于提高开发效率和代码可维护性。这只是入门阶段的内容,深入了解还需要查阅更多资料和在实际项目中不断练习。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维开发王义杰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Go语言中的database/sql库提供了一套通用的接口来与SQL数据库进行交互。以下内容将详细介绍如何使用这个库。
    • 1. 引入驱动
      • 2. 建立连接
        • 3. 执行查询
          • 4. 处理结果
            • 5. 执行非查询命令
              • 6. 事务处理
              • 总结
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档