go利用sqlite3数据库实现CURD操纵

[复制链接]
发表于 2025-12-18 12:48:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
工具类项目逐步喜好利用sqlite3数据库。工具类项目不存在并发标题,摆设项目也不须要额外去安装数据库服务端,非常省事。
  1、安装sqlite3驱动

  1. go get github.com/mattn/go-sqlite3
复制代码
2、go毗连sqlite3初始化方法

  1. var db *sql.DB
  2. func init() {
  3.    
  4.    
  5.         // 打开或创建一个 SQLite 数据库文件
  6.         var err error
  7.         db, err = sql.Open("sqlite3", "./db.db")
  8.         if err != nil {
  9.    
  10.    
  11.                 log.Fatal(err)
  12.         }
  13.         // 测试连接
  14.         if err = db.Ping(); err != nil {
  15.    
  16.    
  17.                 log.Fatal(err)
  18.         }
  19. }
复制代码
这里涉及到一个init()函数。在 Go 语言中,init() 函数是一个特别的函数,它在步调开始实验时主动调用,这里就可以拿来毗连数据库初始化操纵。每个包都可以包罗恣意数量标 init() 函数,而且这些函数会在包被导入时主动实验。init() 函数通常用于初始化操纵,比方设置变量、打开文件或数据库毗连等。
init() 函数的特点:

      
  • 主动调用:init() 函数不须要显式调用,它们在包被导入时主动实验。  
  • 实验次序:
         
    • 如果一个包中有多个 init() 函数,它们会按照在源代码中的次序依次实验。   
    • 如果一个包导入了其他包,那么被导入包的 init() 函数会在导入它的包的 init() 函数之前实验。   
    • 无参数和返回值:init() 函数没有参数也没有返回值。   
    • 不能被其他函数调用:init() 函数只能由运行时体系调用,不能被其他函数调用。   
      
3、测试Users布局体

  1. type Users struct {
  2.    
  3.    
  4.         ID    int
  5.         Name  string
  6.         Email string
  7. }
复制代码
  布局体字段的首字母是否大写决定了该字段是否对包外可见(便是否具有公共访问权限)
  知识点:

      
  • 首字母大写:如果一个标识符(包罗布局体字段、函数名、变量名等)的首字母是大写的,那么它就是可以被其他包访问的,即它是“导出的”或“公开的”。  
  • 首字母小写:如果一个标识符的首字母是小写的,那么它只能在其界说的包内部访问,对于其他包是不可见的,即它是“未导出的”或“私有的”。
4、users表CURD操纵

  1. // CreateUser 创建新用户
  2. func (u *Users) CreateUser() (int64, error) {
  3.    
  4.    
  5.         stmt, err := db.Prepare("INSERT INTO users (name, email) VALUES (?, ?)")
  6.         if err != nil {
  7.    
  8.    
  9.                 return 0, err
  10.         }
  11.         res, err := stmt.Exec(u.Name, u.Email)
  12.         if err != nil {
  13.    
  14.    
  15.                 return 0, err
  16.         }
  17.         return res.LastInsertId()
  18. }
  19. // GetUserByID 根据 ID 获取用户
  20. func (u *Users) GetUserByID(id int) error {
  21.    
  22.    
  23.         row := db.QueryRow("SELECT id, name, email FROM users WHERE id = ?", id)
  24.         return row.Scan(&u.ID, &u.Name, &u.Email)
  25. }
  26. // GetAllUsers 获取所有用户
  27. func GetAllUsers() ([]*Users, error)
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表