首页 > 其他分享 >go 简单的CRUD

go 简单的CRUD

时间:2023-10-30 17:55:33浏览次数:21  
标签:log users err CRUD db user 简单 go User

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/mattn/go-sqlite3"
	"log"
	"time"
)

/**
  id int primary key     not null,
  name           text    not null,
  age            int     not null,
  address        char(50),
  salary         real

*/

type User struct {
	id      int
	name    string
	age     int
	address int
	salary  float32
}

func main() {
	db, err := sql.Open("sqlite3", "D:\\sqlite-tools-win32-x64-202310241106\\test_db.db")
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	err = db.Ping()
	if err != nil {
		log.Fatal("数据库连接失败!!!:", err)
	}
	fmt.Println("数据库连接成功")

	// 查询用户
	// 获取开始时间
	startTime := time.Now()
	users := queryUsers(db)
	fmt.Println("Users:")
	for _, user := range users {
		fmt.Printf("id: %d, name: %s, address: %d,age: %d,salary: %.2f \n ", user.id, user.name, user.address, user.age, user.salary)
	}
	endTime := time.Now()
	fmt.Println("运行时间:", endTime.Sub(startTime).Seconds())

}

func queryUsers(db *sql.DB) []User {
	rows, err := db.Query("select * from user limit 1000")
	if err != nil {
		log.Fatal(err)
	}
	var users []User
	for rows.Next() {
		var user User
		err := rows.Scan(&user.id, &user.name, &user.age, &user.address, &user.salary)
		if err != nil {
			log.Fatal(err)

		}
		users = append(users, user)
	}

	return users
}

func updateUser(db *sql.DB, user User) {
	sqlStmt := `
	UPDATE users SET name = ? WHERE id = ?;
	`
	_, err := db.Exec(sqlStmt, user.Name, user.ID)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("User updated successfully!")
}

func deleteUser(db *sql.DB, userID int) {
	sqlStmt := `
	DELETE FROM users WHERE id = ?;
	`
	_, err := db.Exec(sqlStmt, userID)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("User deleted successfully!")
}

func insertUser(db *sql.DB, user User) {
	sqlStmt := `
	INSERT INTO users (name, email) VALUES (?, ?);
	`
	_, err := db.Exec(sqlStmt, user.Name, user.Email)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("User inserted successfully!")
}

标签:log,users,err,CRUD,db,user,简单,go,User
From: https://www.cnblogs.com/MnysLjj/p/17798461.html

相关文章

  • 2023-10-21:用go语言,一共有三个服务A、B、C,网络延时分别为a、b、c 并且一定有:1 <= a <= b
    2023-10-21:用go语言,一共有三个服务A、B、C,网络延时分别为a、b、c并且一定有:1<=a<=b<=c<=10^9但是具体的延时数字丢失了,只有单次调用的时间一次调用不可能重复使用相同的服务,一次调用可能使用了三个服务中的某1个、某2个或者全部3个服务比如一个调用的时间,T=100100的延时......
  • go 函数
    函数:声明: func函数名字(参数列表)(返回值列表){}举例: funcadd(){} funcadd(aint,bint)int{} funcadd(aint,bint)(int,int){}特点: a.不支持重载,一个包不能有两个名字一样的函数. b.函数也是一种类型,一个函数可以赋值给变量(这个变量是......
  • 数据库信息速递 MongoDB 在开发者工具中集成了AI功能提高开发工作者的效率 (译)...
    MongoDB在6月份向其NoSQLAtlas数据库服务(DBaaS)添加向量搜索功能之后,MongoDB正在为一些工具添加新的生成式AI功能,来以进一步提高开发者的工作效率。这些新功能已经添加到MongoDB的关系迁移工具中如,Compass、AtlasCharts工具中。在文档接口中,MongoDB添加了一个由AI驱动的聊天机器人......
  • 【GEE】Google Earth Engine(GEE)注册详细教程&无需教育邮箱
    ​    这个专栏真的是纠结了很久,不知道到底要不要分享自己在学习GEE的时候的一些经验和代码。因为本人在日常中使用Python和ENVI多点,虽然GEE也会用但不至于频繁使用,同时针对GEE其实官网给出了很多接口的使用方法,国内外也有很多人分享过一些实操代码,因此大部分代码可能都......
  • Django实战项目-学习任务系统-定时任务管理
    接着上期代码框架,开发第4个功能,定时任务管理,再增加一个学习定时任务表,主要用来设置周期重复性的学习任务,定时周期,定时时间,任务标题和内容,预计完成天数,奖励积分和任务状态等信息。 现实中学习一门课程或一项技能知识,需要很长时间的学习积累才能学会,不像小说世界,游戏世界等虚拟世......
  • MIGO Runtime Errors MESSAGE_TYPE_X program SAPLCKM4 in PERIODENART_BESTIMMEN
    用户在测试环境执行MIGO,系统dump检查系统后,发现是物料账期错误 修改账期,系统正常 ......
  • 简单的凯撒密码、维吉尼亚密码介绍
    凯撒密码:维吉尼亚密码:请描述维吉尼亚密码和凯撒密码的区别是什么?不同点:凯撒密码,就是将字母进行位移,位移范围1-25;维吉尼亚密码是查表,查表范围也是1-26;相同点:明文多长,密文也是同样是这么长;......
  • 一招提高交易成功率,FPmarkets理解混沌理论后就是这么简单
    要想一招提高交易成功率,FPmarkets认为其实很简单,只需理解混沌理论的三种类型的冒险精神,对号入座选择适合自己的交易策略,根据冒险精神,混沌理论将人们分为三种类型:1. 领导者:这些是愿意超越公认的标准,追求更大成就的人。他们勇于创新,敢于突破,总是努力超越自我,实现更高的目标。2. 追......
  • 电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
    一、介绍电影推荐管理系统。本系统使用Python作为主要开发语言,前端采用HTML、CSS、BootStrap等技术语言框架搭建展示界面,后端采用Django作为功能逻辑处理,并使用Ajax实现前端与和后端的通信。其主要实现功能如下:系统平台分为管理员和用户两个角色用户可以登录、注册、查看电影、发表......
  • 电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
    一、介绍电影推荐管理系统。本系统使用Python作为主要开发语言,前端采用HTML、CSS、BootStrap等技术语言框架搭建展示界面,后端采用Django作为功能逻辑处理,并使用Ajax实现前端与和后端的通信。其主要实现功能如下:系统平台分为管理员和用户两个角色用户可以登录、注册、查看电影......