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

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

原理

应用程序调用 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.jsqmd.com/news/47064/

相关文章:

  • 2025.11.21 - A
  • 2025年新版ADB工具箱下载+驱动+ADB指令集+fastboot刷机ROOT程序
  • P7960 [NOIP2021] 报数__洛谷题解
  • 与括号序列相关的 DP 笔记
  • 【251121】CF2171 Div.3 vp 总结
  • OI 笑传 #32
  • PyOpenGL实现Bresenham算法
  • 【Linux】教你在 Linux 上搭建 Web 服务器,步骤清晰无门槛 - 详解
  • 【第7章 I/O编程与异常】\r\n 和 \n\r是一回事吗?
  • 深入解析:windows显示驱动开发-CCD api的摘要及方案(一)
  • nju实验七 状态机及键盘输入
  • Gephi如何支持MySQL数据的复杂查询
  • Mozilla CI日志中暴露微软x-apikey的安全事件分析
  • Gephi怎样优化MySQL数据的展示效果
  • Gephi对MySQL数据的导入导出有何支持
  • 智能制造(MOM)-详细设计 - 智慧园区
  • nju实验六 移位寄存器及桶形移位器
  • P6727 [COCI 2015/2016 #5] OOP
  • 完整教程:政务系统信创改造中,金仓日志如何满足等保2.0三级审计要求
  • 基于 Erlang 的英文数字验证码识别系统设计与实现
  • 如何使用IDM嗅探视频并下载?
  • java数据结构--LinkedList与链表 - 教程
  • 洛谷 B4409:[GESP202509 一级] 商店折扣 ← 模拟算法
  • 深入解析:自动化文件管理:分类、重命名和备份
  • nju实验三 加法器与ALU
  • 信息论(八):吉布斯不等式的证明
  • macos: 景观类动态的壁纸和屏保保存在哪里
  • pyppeteer: 得到当前运行中的浏览器
  • 题解:AT_agc028_e [AGC028E] High Elements
  • 基于单片机的篮球比赛计时与比分控制系统设计 - 详解