通过DataReader获取sql查询的字段元数据信息

news/2025/11/21 22:11:58/文章来源:https://www.cnblogs.com/ives/p/19254662

原理

应用程序调用 GetSchemaTable()↓
ADO.NET 驱动程序生成元数据查询SQL↓
发送到数据库服务器执行↓
数据库返回结果集架构信息(不包含实际数据)↓
ADO.NET 解析架构信息并构建 DataTable↓
返回包含完整列信息的 DataTable

sqlsugar

            var sql = $@"select * from sys_database d
left join sys_table t
on d.""id"" = t.database_id";//var behavior80c9dce3fe3b43b8847e55614ab45b56 = CommandBehavior.SequentialAccess |  CommandBehavior.CloseConnection;var behavior80c9dce3fe3b43b8847e55614ab45b56 = CommandBehavior.SchemaOnly;res = new List<object>();var result = await sqlSugar.Ado.GetCommand(sql, paraList.ToArray()).ExecuteReaderAsync(CommandBehavior.SchemaOnly);var schema = result.GetSchemaTable();foreach (DataRow row in schema.Rows){string columnName = row["ColumnName"].ToString();Type dataType = (Type)row["DataType"];int columnSize = (int)row["ColumnSize"];//bool isNullable = (bool)row["AllowDBNull"];var isNullable = row["AllowDBNull"];// 还有其他信息,如精度、小数位数等Console.WriteLine($"列名: {columnName}, 类型: {dataType}, 大小: {columnSize}, 可空: {isNullable}");}

ado

using (SqlCommand command = new SqlCommand("SELECT TOP 0 * FROM employees", connection))
{using (SqlDataReader reader = command.ExecuteReader()){// 获取数据表的Schemavar schemaTable = reader.GetSchemaTable();// 遍历每一列的Schema信息foreach (DataRow row in schemaTable.Rows){string columnName = (string)row["ColumnName"];Type dataType = (Type)row["DataType"];int maxLength = (int)row["ColumnSize"];bool allowNull = (bool)row["AllowDBNull"];// 输出列的信息Console.WriteLine("列名:{columnName}");Console.WriteLine("数据类型:{dataType}");Console.WriteLine("最大长度:{maxLength}");Console.WriteLine("是否允许为空:{allowNull}");Console.WriteLine("---------------------------------------");}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/972584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker命令入门

Docker命令入门1. 使用容器运行 Nginx 应用 1.1 使用 docker run 命令运行 Nginx 应用 1.1.1 观察下载容器镜像过程查找本地容器镜像文件执行命令过程一:下载容器镜像 $ docker run -d nginx:latestUnable to find im…

2025.11.21 - A

今天形势与政策,听了一些国际形势,收获颇丰

2025年新版ADB工具箱下载+驱动+ADB指令集+fastboot刷机ROOT程序

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

P7960 [NOIP2021] 报数__洛谷题解

P7960 [NOIP2021] 报数 题目描述 报数游戏是一个广为流传的休闲小游戏。参加游戏的每个人要按一定顺序轮流报数,但如果下一个报的数是 \(7\) 的倍数,或十进制表示中含有数字 \(7\),就必须跳过这个数,否则就输掉了游…

The 5W2H Problem-Solving Method

The 5W2H Problem-Solving Method https://www.msicertified.com/wp-content/uploads/2024/02/The-5W2H-Problem-Solving-Method.pdf 出处:http://www.cnblogs.com/lightsong/本文版权归作者和博客园共有,欢迎转载,但…

题解:SP5830 ALTPERM - Alternating Permutations

题意:给你 \(K\) 个下标,保证 \(A_1=1,A_K=N\),且对任意的 \(i<N\) 有 \(A_i<A_{i+1}\)。 如果一个排列,在下标 \(A_1\) 到 \(A_2\) 处单调递增,在下标 \(A_2\) 到 \(A_3\) 处单调递减,在下标 \(A_3\) 到 …

图床创建:github+Picgo+obsidian 带有同步删除的自动上传

最近一直在做DL部分的学习笔记,一个比较麻烦的地方就是我一直用的obsidian做笔记内容,在博客园导入随笔后,图片的链接一直是我的本地路径,自然无法显示,于是我只好在导入随笔后再把图片一张张上传到博客园的图床上…

重组生长因子全面解析:从结构功能到科研应用指南

重组生长因子是现代生命科学研究中不可或缺的重要工具,它们通过基因工程技术在体外表达和纯化获得,为细胞生物学、发育生物学及信号转导研究提供了高纯度、高活性的关键试剂。作为科研试剂,重组生长因子以其精确的序…

2055.11.21

十点睡醒起床,吃饭 然后洗澡回宿舍上网课,开团会,出去吃饭,回宿舍准备睡觉

Dify异步接口调用优化实践:解决长时任务处理与网络超时疑问

Dify异步接口调用优化实践:解决长时任务处理与网络超时疑问pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

STM32系统时钟与SysTick定时器

一、系统嘀嗒定时器(SysTick)全面解析 1. SysTick定时器基本概念 定时器是STM32 中常用的外设,一般定时器的基本功能就是定时,而在Cortex M3/M4 内核中也包含一个简单的定时器,就是系统嘀嗒定时器(Systick),它是属…

【251121】CF2171 Div.3 vp 总结

老师说让我尝试体验快乐 AK,但是我失败了。 还是太菜了喵! 题目梗概题目编号 题目名称 题目链接A Shizuku Hoshikawa and Farm Legs LinkB Yuu Koito and Minimum Absolute Sum LinkC1 / C2 Renako Amaori and XOR G…

OI 笑传 #32

なんてったって春今天是 bct Day2,赛时 \(40+60+10+0=110\),rk 70。 挂分原因是被 vector 卡常了/fn。然后 T4 捆绑 Sbt#1 T 了一个于是又没了 20pts。 评价是 ok 场,练习了对拍的使用。 发现 hm2ns 总是会随口否掉…

PyOpenGL实现Bresenham算法

Bresenham直线算法 Bresenham画圆算法 中点Bresenham画椭圆算法1. Bresenham直线生成算法 1.1 理论基础 绘制直线的最直观想法是使用直线方程 y = mx + b,并对x的每个整数值计算y 这涉及到大量的浮点数乘法和舍入运算…

【Linux】教你在 Linux 上搭建 Web 服务器,步骤清晰无门槛 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【第7章 I/O编程与异常】\r\n 和 \n\r是一回事吗?

\r\n 和 \n\r 不是一回事,它们是两种完全不同的字节序列,在语义和实际效果上也完全不同。 一、含义对比 序列 字节(十六进制) 含义\r\n 0x0D 0x0A 回车(Carriage Return) + 换行(Line Feed)✅ Windows 标准换行…

2025-11-21

CF Problem - 1234C - Codeforces(贪心) #include <bits/stdc++.h> using namespace std; #define LL long long const LL mod = 998244353; const int N=2e5+10; string s[2];void solve() {int n;cin >&g…

深入解析:windows显示驱动开发-CCD api的摘要及方案(一)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

nju实验七 状态机及键盘输入

本实验的目的是学习状态机的工作原理,了解状态机的编码方式,并利用PS/2键盘输入实现简单状态机的设计。实验七 状态机及键盘输入 简单状态机 . ├── build ├── constr │ └── top.nxdc ├── csrc │ └…