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

go语言:数据库sql查询保存任意数量字段的数据

1、查询任意列数的表,并输出

func search() {rows, _ := db.Query("select * from users") // 查询数据columns, _ := rows.Columns()               // 查询到的字段名列表values := make([]any, len(columns))        // 根据字段数量,创建接收字段值的列表for i := range columns {                   // 根据字段数量初始化字段值values[i] = new(sql.RawBytes) // 定义值类型为 sql.RawBytesfmt.Print(columns[i], "  ")   // 打印字段名}fmt.Println()     // 换行for rows.Next() { // 循环多行数据rows.Scan(values...)       // 将一行数据赋值for _, d := range values { // 取出一行数据dd, _ := d.(*sql.RawBytes)   // 将任意类型数据转换为sql.RawBytes地址fmt.Print(string(*dd), "  ") // 将sql.RawBytes的地址转换为字符串}fmt.Println()}
}

2、根据输入的sql查找字符串,输出字段名列表、每行数据列表

func search1(sqlstr string) ([]string, [][]string) {var fields []string                 // 存储字段名var datas [][]string                // 存储所有数据行var data []string                   // 临时存储单行数据rows, _ := db.Query(sqlstr)         // 查询数据columns, _ := rows.Columns()        // 查询到的字段名列表values := make([]any, len(columns)) // 根据字段数量,创建接收字段值的列表for i := range columns {            // 根据字段数量初始化字段值values[i] = new(sql.RawBytes)       // 定义值类型为 sql.RawBytesfields = append(fields, columns[i]) // 存储字段名}for rows.Next() { // 循环多行数据rows.Scan(values...)       // 将一行数据赋值for _, d := range values { // 取出一行数据dd, _ := d.(*sql.RawBytes)       // 将任意类型数据转换为sql.RawBytes地址data = append(data, string(*dd)) // 存储单行数据}datas = append(datas, data) // 将单行数据添加到数据列表data = []string{}           // 单行数据清零}return fields, datas            // 返回字段值列表、每行数据列表
}

相关文章:

  • yii2 ActiveForm使用技巧
  • DS:二叉树的链式存储及遍历
  • 解析Java中1000个常用类:AbstractSequentialList类,你学会了吗?
  • 视觉新纪元:解码LED显示屏的视角、可视角、最佳视角的最终奥秘
  • DDMA信号处理以及数据处理的流程---距离速度测量
  • 三目运算符中间的表达式可以省略吗(a?:c)?
  • 【pytorch01】简单回归问题
  • 空间复杂度 线性表,顺序表尾插。
  • 离线linux通过USB连接并使用手机网络
  • 初学者应该掌握的MySQL数据库的基本组成部分及概念
  • 【Docker】——安装镜像和创建容器,详解镜像和Dockerfile
  • 【Qt】QList<QVariantMap>中数据修改
  • ic基础|功耗篇03:ic设计人员如何在代码中降低功耗?一文带你了解行为级以及RTL级低功耗技术
  • 指纹浏览器与虚拟机的区别及在跨境电商中的应用
  • LeetCode 每日一题 2024/6/17-2024/6/23
  • Angular 响应式表单之下拉框
  • ES2017异步函数现已正式可用
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • nginx 配置多 域名 + 多 https
  • October CMS - 快速入门 9 Images And Galleries
  • SQLServer之索引简介
  • vagrant 添加本地 box 安装 laravel homestead
  • Vue2 SSR 的优化之旅
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 问题之ssh中Host key verification failed的解决
  • 学习Vue.js的五个小例子
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • #includecmath
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (论文阅读11/100)Fast R-CNN
  • (一)SvelteKit教程:hello world
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net wcf memory gates checking failed
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .Net多线程总结
  • .NET开源项目介绍及资源推荐:数据持久层
  • ??在JSP中,java和JavaScript如何交互?
  • @EnableConfigurationProperties注解使用
  • @private @protected @public
  • @test注解_Spring 自定义注解你了解过吗?
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [22]. 括号生成
  • [AIGC] CompletableFuture的重要方法有哪些?
  • [C++基础]-入门知识
  • [C语言]——函数递归
  • [GN] Vue3.2 快速上手 ---- 核心语法2
  • [HDU]2161Primes
  • [LeetCode]—Anagrams 回文构词法
  • [Paper]Application of deep convolutional neural network for automated detection of myocardial...
  • [Spark、hadoop]Spark Streaming整合kafka实战
  • [SQL调优] Maclean讲SQL调优精要