Golang如何用 database/sql 连接数据库_Golang database/sql 数据库操作实战


Go语言通过database/sql包操作数据库简洁高效,需先安装驱动如go-sql-driver/mysql并导入。使用sql.Open("mysql", DSN)连接数据库,DSN格式为用户:密码@协议(地址:端口)/数据库名,再调用db.Ping()测试连接。执行插入用db.Exec("INSERT...")获取结果和ID,查询单行用db.QueryRow().Scan()绑定变量,多行查询用db.Query()遍历rows。为防SQL注入且提升性能,应使用db.Prepare()创建预处理语句。事务通过db.Begin()开启,tx.Exec()执行操作,成功则tx.Commit()提交,失败需tx.Rollback()回滚。务必处理error并defer关闭db、rows、stmt等资源。掌握这些核心方法即可覆盖多数数据库场景。

golang如何用 database/sql 连接数据库_golang database/sql 数据库操作实战

Go语言通过database/sql包操作数据库非常简洁高效。它提供了一套标准接口,配合对应的驱动(如MySQL、PostgreSQL、SQLite等),可以实现数据库的连接、查询、插入、更新和事务处理。下面以MySQL为例,详细介绍如何使用database/sql进行数据库操作。

1. 安装驱动并导入包

Go的'database/sql'是标准库,但不包含具体数据库驱动,需要额外引入。以MySQL为例,常用驱动是github.com/go-sql-driver/mysql

安装命令:

go get -u github.com/go-sql-driver/mysql

在代码中导入:

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

注意:下划线表示初始化驱动,让sql.Open能识别"mysql"类型。

2. 连接数据库

使用sql.Open创建数据库连接对象,传入驱动名和数据源名称(DSN)。

Animate AI Animate AI

Animate AI是个一站式AI动画故事视频生成工具

Animate AI 234 查看详情 Animate AI
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
if err != nil {
    log.Fatal(err)
}
defer db.Close()

// 测试连接
err = db.Ping()
if err != nil {
    log.Fatal(err)
}

常见DSN格式:用户名:密码@协议(地址:端口)/数据库名。可添加参数如charset=utf8mb4&parseTime=True

3. 执行SQL操作

连接成功后,就可以执行各类SQL语句。

  • 插入数据
    result, err := db.Exec("INSERT INTO users(name, age) VALUES(?, ?)", "Alice", 25)
    if err != nil {
        log.Fatal(err)
    }
    id, _ := result.LastInsertId()
    fmt.Printf("插入ID: %d\n", id)
    
  • 查询单行:使用QueryRow
    var name string
    var age int
    err := db.QueryRow("SELECT name, age FROM users WHERE id = ?", 1).Scan(&name, &age)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("姓名: %s, 年龄: %d\n", name, age)
    
  • 查询多行:使用Query
    rows, err := db.Query("SELECT id, name, age FROM users")
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()
    
    for rows.Next() {
        var id int
        var name string
        var age int
        rows.Scan(&id, &name, &age)
        fmt.Printf("ID: %d, 姓名: %s, 年龄: %d\n", id, name, age)
    }
    

4. 使用预处理语句防止SQL注入

频繁执行相同SQL时,建议使用Prepare提升性能并增强安全性。

stmt, err := db.Prepare("INSERT INTO users(name, age) VALUES(?, ?)")
if err != nil {
    log.Fatal(err)
}
defer stmt.Close()

_, err = stmt.Exec("Bob", 30)
_, err = stmt.Exec("Charlie", 35)

5. 事务处理

使用Begin开启事务,Commit提交,Rollback回滚。

tx, err := db.Begin()
if err != nil {
    log.Fatal(err)
}

_, err = tx.Exec("INSERT INTO users(name, age) VALUES(?, ?)", "D*id", 28)
if err != nil {
    tx.Rollback()
    log.Fatal(err)
}

err = tx.Commit()
if err != nil {
    log.Fatal(err)
}

基本上就这些。掌握Open、Exec、Query、Prepare和事务,就能应对大多数数据库操作场景。关键是记得处理error和关闭资源。不复杂但容易忽略细节。

以上就是Golang如何用 database/sql 连接数据库_Golang database/sql 数据库操作实战的详细内容,更多请关注其它相关文章!


# 新和  # 苏州虚拟网站建设哪里有  # 亚马逊前十关键词排名  # 怎么推广食品网站  # 推广优化网站网络系统seo  # 莱山区集团网站优化排名  # 峰峰矿区营销推广  # 营销网站优化资费是什么  # 安康营销推广报价  # 奶茶营销推广概述  # 口腔科怎么做营销推广  # 遍历  # 就能  # 是个  # 事务处理  # 键值  # golang  # 为例  # 两种  # 如何用  # 连接数据库  # 防止sql注入  # sql语句  # sql注入  # 端口  # go语言  # github  # go  # git  # word  # mysql 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 铁拳8在线玩 铁拳8在线秒玩入口  批改网官网首页登录 批改网学生用户登录入口  yy漫画登录页面官方入口_yy漫画在线阅读网址入口  Excel宏怎么删除_Excel中删除宏的详细操作流程  c++如何掌握指针的核心用法_c++指针入门到精通指南  微信如何设置字体大小_微信字体设置的阅读舒适  AO3永久镜像入口开放_AO3最新网址兼容所有浏览器  12306夜间购票失败? | 查看官方公布的暂停服务公告与应对方案  夸克浏览器资源嗅探怎么用 夸克浏览器网页资源下载技巧【教程】  无人机考证官网 中国民航无人机考证官网登录入口  在Flask应用中安全高效地更新SQLAlchemy用户数据  微信客户端如何找回密码_微信客户端忘记密码找回方法  QQ阅读小说搜索入口地址_QQ阅读小说搜索入口地址搜索在线阅读  《via浏览器》强制缩放网页设置方法  J*aScript对象中深度嵌套URL键的查找与更新策略  《桃源记2》资源采集攻略  《百果园》充值余额方法  126邮箱申请入口官网_126邮箱注册免费登录2025  在Django单元测试中优雅处理信号:基于环境的条件执行策略  TikTok搜索结果不显示怎么办 TikTok搜索刷新与优化方法  《广发易淘金》国债逆回购操作教程  CodeIgniter 3 中基于 MySQL 数据高效生成动态图表教程  mysql如何管理数据库账户_mysql数据库账户管理技巧  4399造梦西游3无敌版_4399游戏入口  百度网盘如何设置上传限额  J*aScript桌面应用_Electron多进程架构实战  qq音乐官方网站入口_qq音乐在线听歌网页版链接  怎样让Windows 11的开始菜单恢复经典样式_Open-Shell工具使用指南【怀旧】  稻壳阅读器官方直达网址链接 稻壳阅读器文档阅读平台主页资源入口  漫蛙app官方版手机正版入口-漫蛙漫画manwa在线漫画正版入口  空腹吃苹果好吗 苹果空腹摄入指南  个人所得税办理入口 个人所得税综合所得年度汇算入口  《王者荣耀世界》英雄获取攻略  KFC邀请码怎么使用领额外优惠_KFC邀请码输入方式与额外优惠代码获取方法  《海贝音乐》均衡器设置方法  c++如何使用std::thread::join和detach_c++线程生命周期管理  XPath动态元素定位:如何精准选择文本内容变化的元素  《撕歌》会员开通方法  苹果17 Pro如何启用分屏浏览_iPhone 17 Pro分屏浏览设置步骤  Win10关闭UAC用户账户控制的方法 Win10降低安全提示等级【技巧】  163邮箱在线登录 163邮箱网页版在线入口  《盗墓笔记手游》技能介绍  2025考研成绩查询时间入口分享  荣耀magicv5怎么上手测评  创客贴登录页面入口 创客贴网页版最新网址链接  淘口令快速解析技巧  AO3中文版手机快速通道_AO3最新稳定链接更新  Python中深度嵌套字典与列表的数据提取与条件过滤指南  WPS文字如何进行简繁转换  Win11怎么录屏_Windows 11自带Xbox Game Bar录制视频 

 2025-11-14

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.