[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的变量中。
评论已关闭