[Golang实战] gorm中使用Raw()和 Exec() 两种方式操作sql原生语句的特点和区别




package main
 
import (
    "gorm.io/driver/sqlite"
    "gorm.io/gorm"
    "log"
)
 
func main() {
    // 连接数据库
    db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
    if err != nil {
        log.Fatal("数据库连接失败:", err)
    }
    
    // 使用Exec执行非查询SQL语句
    sql := "INSERT INTO users (name, age) VALUES (?, ?)"
    result := db.Exec(sql, "张三", 25)
    if result.Error != nil {
        log.Fatal("Exec SQL 出错:", result.Error)
    }
    log.Println("插入成功", result.RowsAffected)
 
    // 使用Raw查询SQL语句
    var names []string
    result = db.Raw("SELECT name FROM users WHERE age > ?", 20).Scan(&names)
    if result.Error != nil {
        log.Fatal("Raw SQL 出错:", result.Error)
    }
    log.Println("查询结果:", names)
}

这段代码首先使用gorm.Open连接SQLite数据库,然后使用Exec方法执行插入操作,并使用Raw方法执行查询操作。这两种方法都可以用来执行原生SQL语句,但Exec主要用于非查询的更新、插入和删除操作,而Raw主要用于查询操作,并且可以让你直接写原生SQL语句。注意,使用Raw时,你需要使用Scan来将结果映射到Go的变量中。

最后修改于:2024年08月16日 08:28

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日