当前位置: 首页 > java >正文

基于go的简单管理系统(增删改查)

package mainimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql"
)var db *sql.DBtype user struct {id   intname stringage  int
}// 建立连接
func initDB() (err error) {dsn := "root:123456@tcp(127.0.0.1:3306)/mysqltest"db, err = sql.Open("mysql", dsn)if err != nil {return}fmt.Println("连接数据库成功")db.SetMaxIdleConns(10)return
}// 增加
func insert() {sqlStr := `insert into usertest(name,age) values("星期三",30)`ret, err := db.Exec(sqlStr)if err != nil {fmt.Printf("insert failed,err:%v\n", err)return}id, err := ret.LastInsertId() //获取IDif err != nil {fmt.Printf("get id failed ,err:%v\n", err)return}fmt.Println("id", id)
}// 删除
func deleteRow(id int) {sqlStr := `delete from  usertest where id=?`ret, err := db.Exec(sqlStr, id)if err != nil {fmt.Printf("delete failed,err:%v\n", err)return}n, _ := ret.RowsAffected()fmt.Printf("删除了%d行的数据\n", n)
}// 改update
func updateRow(newAge int, id int) {sqlStr := `update usertest set age=? where id=?`ret, err := db.Exec(sqlStr, newAge, id)if err != nil {fmt.Printf("update failed,err:%v\n", err)return}n, _ := ret.RowsAffected()fmt.Printf("更新了%d行数据\n", n)
}// 查询-单行
func query(id int) {sqlStr := "select id,name,age from usertest where id=?;"rowObj := db.QueryRow(sqlStr, id) //用于执行单行查询的方法var u1 userrowObj.Scan(&u1.id, &u1.name, &u1.age) //将查询结果扫描到变量中fmt.Printf("u1:%#v\n", u1)
}// 查询-多行
func queryMore(n int) {sqlStr := "select id,name,age from user where id >?;"rows, err := db.Query(sqlStr, n)if err != nil {fmt.Printf("%s query failed,err:%v\n", sqlStr, err)return}defer rows.Close()for rows.Next() {var u1 userrows.Scan(&u1.id, &u1.name, &u1.age)fmt.Printf("u1:%#v\n", u1)}
}// 模糊查询
func queryNameLike(pattern string) {sqlStr := "SELECT id,name,age FROM usertest WHERE name LIKE ?"rows, err := db.Query(sqlStr, "%"+pattern+"%")if err != nil {fmt.Printf("query failed, err:%v\n", err)return}defer rows.Close()fmt.Println("模糊查询结果:")for rows.Next() {var u usererr := rows.Scan(&u.id, &u.name, &u.age)if err != nil {fmt.Printf("scan failed, err:%v\n", err)return}fmt.Printf("ID:%d Name:%s Age:%d\n", u.id, u.name, u.age)}// 检查遍历是否出错if err = rows.Err(); err != nil {fmt.Printf("rows iteration error:%v\n", err)}
}// 年龄范围查询
func queryByAgeRange(minAge, maxAge int) {sqlStr := `SELECT id, name, age FROM usertest WHERE age BETWEEN ? AND ? ORDER BY age DESC`rows, err := db.Query(sqlStr, minAge, maxAge)if err != nil {fmt.Printf("query failed, err:%v\n", err)return}defer rows.Close()fmt.Printf("年龄%d~%d查询结果:\n", minAge, maxAge)for rows.Next() {var u userif err := rows.Scan(&u.id, &u.name, &u.age); err != nil {fmt.Printf("scan failed, err:%v\n", err)return}fmt.Printf("ID:%d Name:%s Age:%d\n", u.id, u.name, u.age)}if err = rows.Err(); err != nil {fmt.Printf("rows error:%v\n", err)}
}// 3. 预处理更新
func preparedUpdate(id int, newName string, newAge int) {// 准备预处理语句stmt, err := db.Prepare("UPDATE usertest SET name=?, age=? WHERE id=?")if err != nil {fmt.Printf("prepare failed, err:%v\n", err)return}defer stmt.Close()// 执行预处理语句result, err := stmt.Exec(newName, newAge, id)if err != nil {fmt.Printf("exec failed, err:%v\n", err)return}// 检查影响行数rowsAffected, err := result.RowsAffected()if err != nil {fmt.Printf("get rows affected failed: %v\n", err)return}fmt.Printf("更新成功,影响%d行\n", rowsAffected)
}func main() {err := initDB()if err != nil {fmt.Printf("init db failed,err:%v\n", err)}//insert() //增加//deleteRow(3) //删除//updateRow(89, 1) //更新//query(1) // 单行查询//queryMore(1) //多行查询preparedUpdate(1, "大姐", 66)
}

效果

http://www.xdnf.cn/news/3160.html

相关文章:

  • Linux基础 -- Generic Netlink 框架详解与开发实践
  • UI设计之photoshop学习笔记
  • ⛺️ Sui Basecamp 2025 最新日程
  • C# 类的基本概念(从类的内部访问成员和从类的外部访问成员)
  • AXI总线设计高带宽or低带宽?你需要做个选择
  • 大规模克希霍夫积分法叠前深度偏移中,并行化和旅行时表处理
  • 11.模方ModelFun工具-指定置平
  • 【Docker】Docker拉取部分常用中间件
  • 音视频项目在微服务领域的趋势场景题深度解析
  • 为Mac用户定制的云服务器Vultr 保姆级教程
  • 运维打铁: 存储方案全解析
  • 《可信数据空间 技术架构》技术文件正式发布
  • 出现Invalid bound statement (not found)问题的原因可能有哪些
  • 分布式数字身份:迈向Web3.0世界的通行证 | 北京行活动预告
  • IoTDB集群部署中的网络、存储与负载配置优化
  • 研发效率破局之道阅读总结(4)个人效率
  • C#学习笔记 项目引用添加异常
  • C++继承(上)
  • 一、OrcaSlicer源码编译
  • VOIP的信令技术有哪些,区别是什么?
  • 【教学类-102-21】蝴蝶三色图作品3——异型书蝴蝶“满格变形图”一页2图、一页4图
  • ubuntu 部署moodle
  • Java Set<String>:如何高效判断是否包含指定字符串?
  • 私有知识库 Coco AI 实战(六):打造 ES Mapping 小助手
  • 你的项目有‘哇‘点吗?
  • LabelVision - yolo可视化标注工具
  • flutter 专题 五十八 关于Flutter提示Your Xcode project requires migration的错误
  • 神经网络用于地震数据时空均匀插值的方法与开源资料
  • Vue:el-table-tree懒加载数据
  • DeepSeek-Prover-V2-671B最新体验地址:Prover版仅适合解决专业数学证明问题