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

SqlHelper 使用手册

目录一、核心方法概览二、ExecuteNonQuery - 增删改操作常用示例重载形式三、事务支持四、ExecuteDataset - 查询数据集五、ExecuteReader - 流式读取六、ExecuteScalar - 获取单值七、SqlHelperParameterCache - 参数缓存八、参数传递方式对比九、快速参考常用代码片段十、注意事项一、核心方法概览方法返回值用途适用场景ExecuteNonQueryint执行增删改返回受影响行数INSERT/UPDATE/DELETEExecuteDatasetDataSet执行查询返回数据集需要离线操作、多表结果ExecuteReaderSqlDataReader执行查询返回流式读取器大数据量、只进读取ExecuteScalarobject执行查询返回首行首列值聚合函数、获取单一值选择指南增删改 →ExecuteNonQuery查询多条数据且需离线操作 →ExecuteDataset查询大数据量且只需遍历一次 →ExecuteReader查询单个值如 COUNT →ExecuteScalar二、ExecuteNonQuery - 增删改操作功能执行 INSERT、UPDATE、DELETE 语句或存储过程返回受影响的行数。⚠️安全警告必须使用参数化查询禁止字符串拼接 SQL防止 SQL 注入攻击。// ❌ 错误字符串拼接存在 SQL 注入风险 string sql DELETE FROM Users WHERE Name userName ; ​ // ✅ 正确使用参数化查询 int rows SqlHelper.ExecuteNonQuery( connString, CommandType.Text, DELETE FROM Users WHERE Status status, new SqlParameter(status, 0) );常用示例// 1. 执行 SQL 语句带参数 int rows SqlHelper.ExecuteNonQuery( connString, CommandType.Text, UPDATE Users SET Name name WHERE Id id, new SqlParameter(name, 张三), new SqlParameter(id, 1) ); ​ // 2. 执行存储过程参数值方式 int rows SqlHelper.ExecuteNonQuery(connString, sp_UpdateUser, 1, 张三);重载形式重载参数说明ExecuteNonQuery(string, CommandType, string)连接字符串、命令类型、SQLExecuteNonQuery(string, CommandType, string, params SqlParameter[])以上 参数数组ExecuteNonQuery(string, string, params object[])连接字符串、存储过程名、参数值ExecuteNonQuery(SqlConnection, ...)使用已有连接对象ExecuteNonQuery(SqlTransaction, ...)在事务中执行三、事务支持功能确保一组数据库操作要么全部成功要么全部失败原子性。使用场景转账扣款入账、订单减库存创建订单等需要保证数据一致性的操作。using (SqlConnection conn new SqlConnection(connString)) { conn.Open(); using (SqlTransaction trans conn.BeginTransaction()) { try { // 扣减库存 SqlHelper.ExecuteNonQuery(trans, CommandType.Text, UPDATE Stock SET Count Count - num WHERE ProductId pid, new SqlParameter(num, 1), new SqlParameter(pid, 100)); // 创建订单 SqlHelper.ExecuteNonQuery(trans, CommandType.Text, INSERT INTO Orders (ProductId, Quantity) VALUES (pid, qty), new SqlParameter(pid, 100), new SqlParameter(qty, 1)); trans.Commit(); // 提交事务 } catch { trans.Rollback(); // 回滚事务 throw; } } // 事务自动释放 } // 连接自动关闭要点事务中的多个操作使用同一trans对象Commit()提交后不可回滚Rollback()后数据恢复到事务开始前状态四、ExecuteDataset - 查询数据集功能执行查询返回DataSet适合获取多张表或需要离线操作的数据。vs ExecuteReaderExecuteDatasetExecuteReader数据加载全部加载到内存逐行读取连接状态读取完立即关闭读取期间保持连接适用场景数据量小、需随机访问数据量大、只需遍历内存占用高低// 1. 查询单表 DataSet ds SqlHelper.ExecuteDataset( connString, CommandType.Text, SELECT * FROM Users WHERE Age age, new SqlParameter(age, 18) ); DataTable dt ds.Tables[0]; ​ // 2. 执行存储过程 DataSet ds SqlHelper.ExecuteDataset(connString, sp_GetUserOrders, 123); ​ // 3. 多结果集查询一次查询返回多个表 DataSet ds SqlHelper.ExecuteDataset( connString, CommandType.Text, SELECT * FROM Users; SELECT * FROM Orders ); // ds.Tables[0] Users // ds.Tables[1] Orders五、ExecuteReader - 流式读取功能返回SqlDataReader适合大数据量、只进读取的场景内存占用低。方法签名ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)// 使用连接字符串自动关闭连接 using (SqlDataReader reader SqlHelper.ExecuteReader( connString, CommandType.Text, SELECT Id, Name FROM Users )) { while (reader.Read()) { int id reader.GetInt32(0); string name reader.GetString(1); } } // Reader 和连接自动关闭 ​ // 使用外部连接连接生命周期由外部控制 SqlConnection conn new SqlConnection(connString); conn.Open(); SqlDataReader reader SqlHelper.ExecuteReader( conn, CommandType.Text, SELECT * FROM Users ); while (reader.Read()) { /* ... */ } reader.Close(); // 必须手动关闭 Reader conn.Close(); // 必须手动关闭连接⚠️注意使用连接字符串方式时Reader 关闭会自动关闭连接使用外部连接方式时连接和 Reader 都需要手动关闭。六、ExecuteScalar - 获取单值功能返回结果集第一行第一列的值常用于获取聚合结果或单个字段。// 获取记录数 object result SqlHelper.ExecuteScalar( connString, CommandType.Text, SELECT COUNT(*) FROM Users ); int count Convert.ToInt32(result); ​ // 获取最大值/最新ID object maxId SqlHelper.ExecuteScalar( connString, CommandType.Text, SELECT MAX(Id) FROM Orders ); ​ // 判断记录是否存在 object exists SqlHelper.ExecuteScalar( connString, CommandType.Text, SELECT 1 FROM Users WHERE Name name, new SqlParameter(name, admin) ); bool hasUser (exists ! null exists ! DBNull.Value);七、SqlHelperParameterCache - 参数缓存功能自动缓存存储过程参数信息避免重复查询数据库获取参数定义提升性能。工作原理首次调用存储过程时通过SqlCommandBuilder.DeriveParameters从数据库获取参数信息将参数信息存入Hashtable缓存键格式连接字符串:存储过程名后续调用直接从缓存获取避免重复查询系统表// 获取记录数 object result SqlHelper.ExecuteScalar( connString, CommandType.Text, SELECT COUNT(*) FROM Users ); int count Convert.ToInt32(result); ​ // 获取最大值/最新ID object maxId SqlHelper.ExecuteScalar( connString, CommandType.Text, SELECT MAX(Id) FROM Orders ); ​ // 判断记录是否存在 object exists SqlHelper.ExecuteScalar( connString, CommandType.Text, SELECT 1 FROM Users WHERE Name name, new SqlParameter(name, admin) ); bool hasUser (exists ! null exists ! DBNull.Value);提示使用SqlHelper.ExecuteXxx(connString, sp_Name, paramValues)形式时参数缓存自动生效。⚠️注意修改存储过程参数后需要重启应用或清除缓存才能生效。八、参数传递方式对比方式示例适用场景显式参数new SqlParameter(name, value)需要精确控制参数类型、方向参数值数组ExecuteXxx(connString, sp_Name, 1, abc)快速调用参数类型自动推断DataRowExecuteXxxTypedParams(connString, sp_Name, dataRow)数据来自 DataRow九、快速参考常用代码片段// 插入数据并获取自增ID SqlHelper.ExecuteNonQuery(connString, CommandType.Text, INSERT INTO Users (Name) VALUES (name), new SqlParameter(name, 张三)); int newId Convert.ToInt32(SqlHelper.ExecuteScalar(connString, CommandType.Text, SELECT SCOPE_IDENTITY())); ​ // 批量查询 DataSet ds SqlHelper.ExecuteDataset(connString, CommandType.Text, SELECT * FROM Users; SELECT * FROM Products); ​ // 检查记录是否存在 object result SqlHelper.ExecuteScalar(connString, CommandType.Text, SELECT 1 FROM Users WHERE Id id, new SqlParameter(id, 1)); bool exists (result ! null result ! DBNull.Value); ​ // 使用存储过程输出参数 SqlParameter[] outputParams new SqlParameter[] { new SqlParameter(Input, value), new SqlParameter(Output, SqlDbType.Int) { Direction ParameterDirection.Output } }; SqlHelper.ExecuteNonQuery(connString, CommandType.StoredProcedure, sp_Test, outputParams); int outputValue (int)outputParams[1].Value;十、注意事项连接管理使用连接字符串方式会自动管理连接using确保释放使用连接对象方式需自行管理。空值处理参数值为null时自动转为DBNull.Value。参数缓存存储过程参数信息会自动缓存提升重复调用性能。异常处理所有方法遇错误会抛出异常常见异常包括ArgumentNullException连接字符串或命令文本为空SqlExceptionSQL 执行错误语法错误、约束冲突等InvalidOperationException连接状态异常 建议调用方使用try-catch处理并记录日志。文档基于 SqlHelper 标准实现整理适用于 .NET Framework SQL Server 环境。

相关文章:

SqlHelper 使用手册

目录 一、核心方法概览 二、ExecuteNonQuery - 增删改操作 常用示例 重载形式 三、事务支持 四、ExecuteDataset - 查询数据集 五、ExecuteReader - 流式读取 六、ExecuteScalar - 获取单值 七、SqlHelperParameterCache - 参数缓存 八、参数传递方式对比 九、快速参…...

Wireshark安装教程(附安装包)

Wireshark 是一款非常流行的、免费开源的网络抓包分析软件,它能捕捉并“翻译”你电脑网络上流过的所有数据包。当网络卡顿、连不上网或者怀疑被黑客攻击时,用它一照,就能看清数据的具体内容、来源和去向,是排查网络故障和网络分析…...

Beyond Compare 5密钥生成器深度解析:高效解决文件对比工具的授权挑战

Beyond Compare 5密钥生成器深度解析:高效解决文件对比工具的授权挑战 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 文件对比工具Beyond Compare 5作为开发者和IT专业人士的得力助…...

3层修复机制深度解析:Windows更新故障修复工具架构原理

3层修复机制深度解析:Windows更新故障修复工具架构原理 【免费下载链接】Reset-Windows-Update-Tool Troubleshooting Tool with Windows Updates (Developed in Dev-C). 项目地址: https://gitcode.com/gh_mirrors/re/Reset-Windows-Update-Tool Reset Wind…...

Phi-4-mini-reasoning参数详解:top_p与temperature协同控制推理确定性的方法

Phi-4-mini-reasoning参数详解:top_p与temperature协同控制推理确定性的方法 1. 模型概述 Phi-4-mini-reasoning是一个专门针对推理任务优化的文本生成模型,特别适合处理需要多步逻辑推导的问题场景。与通用对话模型不同,它被设计用来解决数…...

Phi-4-mini-reasoning与YOLOv5协同实战:图像描述生成与逻辑推理

Phi-4-mini-reasoning与YOLOv5协同实战:图像描述生成与逻辑推理 1. 效果亮点预览 当视觉识别遇上逻辑推理,会碰撞出怎样的火花?我们最近尝试了一个有趣的实验:用YOLOv5识别图片中的物体,再将识别结果输入Phi-4-mini-…...

QQ截图独立版深度技术解析:从逆向工程到多引擎OCR架构完全指南

QQ截图独立版深度技术解析:从逆向工程到多引擎OCR架构完全指南 【免费下载链接】QQScreenShot 电脑QQ截图工具提取版,支持文字提取、图片识别、截长图、qq录屏。默认截图文件名为ScreenShot日期 项目地址: https://gitcode.com/gh_mirrors/qq/QQScreenShot Q…...

在线溶解氧分析仪 在线溶氧测定仪 在线溶解氧水温分析仪

在线溶解氧分析仪的精准性与稳定性,源于核心参数的科学配置,每一项参数都贴合实际应用场景,确保监测数据可靠、设备运行稳定,具体核心参数如下:测量参数:核心监测溶解氧、水温,可快速、准确记录…...

5分钟掌握Mem Reduct:Windows内存清理与监控的终极免费工具

5分钟掌握Mem Reduct:Windows内存清理与监控的终极免费工具 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct …...

终极网盘直链下载助手:告别限速困扰的八大网盘全能解决方案

终极网盘直链下载助手:告别限速困扰的八大网盘全能解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 /…...

Cursor Free VIP:如何绕过限制免费解锁AI编程神器的完整方案

Cursor Free VIP:如何绕过限制免费解锁AI编程神器的完整方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached yo…...

Windows任务栏定制终极指南:7+ Taskbar Tweaker完全掌控你的桌面体验

Windows任务栏定制终极指南:7 Taskbar Tweaker完全掌控你的桌面体验 【免费下载链接】7-Taskbar-Tweaker A Windows taskbar customization tool for Windows 7, Windows 8, and Windows 10 项目地址: https://gitcode.com/gh_mirrors/7t/7-Taskbar-Tweaker …...

她拿过枪,打过丧尸,现在用一座“记忆宫殿”拿下了AI记忆系统的世界第一

好莱坞演员做出了超越所有AI公司的产品,而且免费开源如果有人在年初告诉你:《生化危机》女主角米拉乔沃维奇(Milla Jovovich)会在年底开源一个AI记忆系统,并在行业标准评测中拿下有史以来第一个满分——你一定会觉得这…...

FanControl终极指南:从零配置到高级调优的Windows风扇控制方案

FanControl终极指南:从零配置到高级调优的Windows风扇控制方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tre…...

如何快速解决Jellyfin媒体库元数据缺失问题:MetaShark插件完整指南

如何快速解决Jellyfin媒体库元数据缺失问题:MetaShark插件完整指南 【免费下载链接】jellyfin-plugin-metashark jellyfin电影元数据插件 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-metashark Jellyfin作为一款开源的媒体服务器软件&…...

基于Visio的Qwen3-ASR系统架构设计图解

基于Visio的Qwen3-ASR系统架构设计图解 1. 引言 系统架构图是技术项目的重要沟通工具,它能直观展示组件关系、数据流向和整体设计思路。对于Qwen3-ASR这样的复杂语音识别系统,一个清晰的架构图能帮助团队成员快速理解系统全貌,减少沟通成本…...

如何免费使用QQ截图独立版?3分钟快速上手终极指南

如何免费使用QQ截图独立版?3分钟快速上手终极指南 【免费下载链接】QQScreenShot 电脑QQ截图工具提取版,支持文字提取、图片识别、截长图、qq录屏。默认截图文件名为ScreenShot日期 项目地址: https://gitcode.com/gh_mirrors/qq/QQScreenShot 还在为截图工具…...

如何高效解决TranslucentTB的Microsoft.VCLibs.140.00缺失错误:完整修复指南

如何高效解决TranslucentTB的Microsoft.VCLibs.140.00缺失错误:完整修复指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB …...

2025届学术党必备的六大AI辅助论文网站横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 立足于学术写作范畴之内,人工智能工具能够极为显著地提高毕业论文在文献整理方面…...

3步解决Zotero PDF Translate翻译失效的终极指南:快速恢复学术研究工具

3步解决Zotero PDF Translate翻译失效的终极指南:快速恢复学术研究工具 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: https://gitcode…...

**deepseek-v3.2写小说软件2025解析,揭秘AI辅助创作如何提升故事连贯性与角色深度**

deepseek-v3.2写小说软件2025解析,揭秘AI辅助创作如何提升故事连贯性与角色深度据中国作家协会网络文学中心发布的《2025年中国网络文学创作生态报告》显示,2025年国内网络文学市场规模预计突破680亿元,但日均更新量超过8000字的全职作者中&a…...

Springboot 实现多数据源(PostgreSQL 和 SQL Server)连接堆

一、环境准备 Free Spire.Doc for Python 是免费 Python 文档处理库,无需依赖 Microsoft Word,支持 Word 文档的创建、编辑、转换等操作,其中内置的 Markdown 解析能力,能高效实现 Markdown 到 Doc/Docx 格式的转换,且…...

你的SSH密钥可能已经过期了烙

引言 在现代软件开发中,性能始终是衡量应用质量的重要指标之一。无论是企业级应用、云服务还是桌面程序,性能优化都能显著提升用户体验、降低基础设施成本并增强系统的可扩展性。对于使用 C# 开发的应用程序而言,性能优化涉及多个层面&#x…...

深度解析NxNandManager:Nintendo Switch NAND管理工具的技术实现

深度解析NxNandManager:Nintendo Switch NAND管理工具的技术实现 【免费下载链接】NxNandManager Nintendo Switch NAND management tool : explore, backup, restore, mount, resize, create emunand, etc. (Windows) 项目地址: https://gitcode.com/gh_mirrors/…...

E7Helper:第七史诗自动化脚本助手完全指南

E7Helper:第七史诗自动化脚本助手完全指南 【免费下载链接】e7Helper 【EPIC】第七史诗多功能覆盖脚本(刷书签🍃,挂讨伐、后记、祭坛✌️,挂JJC等📛,多服务器支持📺,qq机器人消息通知…...

FreakStudio瓢

环境安装 pip install keystone-engine capstone unicorn 这3个工具用法极其简单,下面通过示例来演示其用法。 Keystone 示例 from keystone import * CODE b"INC ECX; ADD EDX, ECX" try:ks Ks(KS_ARCH_X86, KS_MODE_64)encoding, count ks.asm(CODE)…...

Venera漫画阅读器终极指南:如何免费聚合全网漫画资源

Venera漫画阅读器终极指南:如何免费聚合全网漫画资源 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera 想要一站式管理所有漫画资源?厌倦了在不同平台间来回切换?Venera是一款开源漫画阅读器…...

DeepSeek-OCR-2GPU算力优化:单卡A10即可实时处理A4高清PDF

DeepSeek-OCR-2GPU算力优化:单卡A10即可实时处理A4高清PDF 1. 项目简介 DeepSeek-OCR-2是DeepSeek团队在2026年1月27日发布的开源OCR模型,采用了创新的DeepEncoder V2方法。这个模型的最大特点是能够根据图像的含义动态重排图像各部分,而不…...

Bilibili-Evolved:重新定义你的B站浏览体验

Bilibili-Evolved:重新定义你的B站浏览体验 【免费下载链接】Bilibili-Evolved 强大的哔哩哔哩增强脚本 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved 你是否曾想过,为什么每次打开B站都要面对千篇一律的界面?为什么…...

**雾计算中的边缘智能:基于Python的轻量级任务调度优化实战**在当前物联网与5G融合发展的背

雾计算中的边缘智能:基于Python的轻量级任务调度优化实战 在当前物联网与5G融合发展的背景下,雾计算(Fog Computing) 正成为连接云端与终端设备的关键桥梁。它通过将计算、存储和网络服务下沉至靠近数据源的边缘节点,显…...