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

SqlHelper类库的使用方法

使用 SqlHelper.dll 时,首先需要在项目中引用该 DLL,然后通过其封装的方法简化 SQL Server 数据库操作。以下是常见操作的 C# 示例代码:

查看SqlHelper.dll方法内容

// 替换为实际的SqlHelper.dll路径
using System.Reflection;
using Microsoft.Data.SqlClient;  //需要安装
string dllPath = @"C:\Users\zjl15\source\repos\ConsoleApp6\ClassLibrary1.dll";
​
// 2. 加载SqlHelper.dll程序集
Assembly assembly = Assembly.LoadFrom(dllPath);
​
// 3. 获取SqlHelper类(假设类名为SqlHelper,可能需要根据实际命名空间调整)
// 常见命名空间可能是SqlHelper或Microsoft.ApplicationBlocks.Data等
Type sqlHelperType = assembly.GetTypes().FirstOrDefault(t => t.Name == "SqlHelper"); // 匹配类名
​
// 4. 获取所有公共方法(包括静态方法,SqlHelper通常为静态类)
// BindingFlags指定:静态方法 + 公共方法 + 忽略继承的方法
MethodInfo[] methods = sqlHelperType.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly);
​
// 5. 遍历并输出方法信息
Console.WriteLine("SqlHelper中的方法列表:");
Console.WriteLine("----------------------------------------");
foreach (var method in methods)
{// 输出方法名Console.Write($"方法名:{method.Name}  ");
​// 输出返回类型Console.Write($"返回类型:{method.ReturnType.Name}  ");
​// 输出参数列表ParameterInfo[] parameters = method.GetParameters();if (parameters.Length > 0){Console.Write("参数:");foreach (var param in parameters){Console.Write($"{param.ParameterType.Name} {param.Name}, ");}}else{Console.Write("无参数");}
​Console.WriteLine("\n----------------------------------------");
}
​
Console.ReadKey();

1. 引用 SqlHelper.dll 并配置连接字符串

  • 在项目中右键「引用」→「添加引用」→ 浏览并选择 SqlHelper.dll

  • 在配置文件(App.config/Web.config)中添加连接字符串(同之前的配置)

  • 注意版本号

<?xml version="1.0" encoding="utf-8" ?>
<configuration><startup> <supportedRuntime version="v8.0" sku=".NETFramework,Version=v8.0.2" /></startup><connectionStrings><add name="connString"  connectionString ="server=localhost;database=db_first;uid=sa;pwd=123456" providerName="Microsoft.Data.SqlClient"/></connectionStrings>
</configuration>

2. 常用方法示例(假设 SqlHelper 类在 SqlHelper 命名空间下)

using System;
using System.Data;
using System.Data.SqlClient;
using SqlHelper; // 引入 SqlHelper 命名空间
​
public class SqlHelperDemo
{// 连接字符串名称(与配置文件中一致)private const string ConnectionName = "DefaultConnection";
​// 1. 执行 INSERT/UPDATE/DELETE(返回受影响行数)public int ExecuteNonQueryExample(){string sql = "INSERT INTO Student (Name, Age) VALUES (@Name, @Age)";// 构建参数(防止SQL注入)SqlParameter[] parameters = {new SqlParameter("@Name", SqlDbType.NVarChar, 50) { Value = "张三" },new SqlParameter("@Age", SqlDbType.Int) { Value = 20 }};// 调用 SqlHelper 的 ExecuteNonQuery 方法return SqlHelper.ExecuteNonQuery(ConnectionName, CommandType.Text, sql, parameters);}
​// 2. 执行查询并返回单个值(如 COUNT、MAX 等)public object ExecuteScalarExample(){string sql = "SELECT COUNT(*) FROM Student WHERE Age > @Age";SqlParameter[] parameters = {new SqlParameter("@Age", SqlDbType.Int) { Value = 18 }};// 调用 SqlHelper 的 ExecuteScalar 方法return SqlHelper.ExecuteScalar(ConnectionName, CommandType.Text, sql, parameters);}
​// 3. 执行查询并返回 DataTable(适合小量数据)public DataTable ExecuteDataTableExample(){string sql = "SELECT * FROM Student WHERE Department = @Dept";SqlParameter[] parameters = {new SqlParameter("@Dept", SqlDbType.NVarChar, 50) { Value = "计算机系" }};// 调用 SqlHelper 的 ExecuteDataTable 方法return SqlHelper.ExecuteDataTable(ConnectionName, CommandType.Text, sql, parameters);}
​// 4. 执行查询并使用 SqlDataReader(适合大量数据,需手动释放资源)public void ExecuteReaderExample(){string sql = "SELECT Id, Name FROM Teacher";using (SqlDataReader reader = SqlHelper.ExecuteReader(ConnectionName, CommandType.Text, sql)){while (reader.Read()){int id = reader.GetInt32(0);string name = reader.GetString(1);Console.WriteLine($"ID: {id}, 姓名: {name}");}} // reader 会在 using 结束后自动关闭}
​// 5. 调用存储过程(带输出参数)public void ExecuteStoredProcedureExample(){// 存储过程名称string procedureName = "GetStudentCountByDept";// 输入参数 + 输出参数SqlParameter[] parameters = {new SqlParameter("@Dept", SqlDbType.NVarChar, 50) { Value = "电子系" },new SqlParameter("@Count", SqlDbType.Int) { Direction = ParameterDirection.Output }};// 执行存储过程(注意 CommandType 为 StoredProcedure)SqlHelper.ExecuteNonQuery(ConnectionName, CommandType.StoredProcedure, procedureName, parameters);// 获取输出参数值int count = (int)parameters[1].Value;Console.WriteLine($"电子系学生数量: {count}");}
}

关键说明:

  1. 方法命名规范SqlHelper.dll 的核心方法通常与上述示例一致(ExecuteNonQueryExecuteScalar 等),具体参数可能略有差异,需参考该 DLL 的文档。

  2. 参数化查询:必须使用 SqlParameter 传递参数,避免 SQL 注入风险。

  3. 资源释放:使用 SqlDataReader 时,建议用 using 语句自动释放资源。

  4. 连接字符串:通过配置文件管理,避免硬编码,方便后期修改。

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

相关文章:

  • .NET周刊【8月第3期 2025-08-17】
  • 鸿蒙ArkUI 基础篇-06-组件基础语法-Column/Row/Text
  • 车载诊断架构 --- 基于整车功能的正向诊断需求开发
  • Dubbo加标签方式
  • Vue3 + 高德地图实现车辆电子围栏监控与报警
  • banner这个文件是怎么请求到后端数据的
  • codeforces(1045)(div2)D. Sliding Tree
  • zookeeper-集群扩缩容
  • 二次校验请求源 IP 是否在 WAF 官方 IP 段内” + “校验是否携带 WAF 专属 HTTP 头
  • 全域管控,一触可达:复合机器人远程监控方案重塑智能制造
  • volitale伪共享问题及解决方案
  • 高效管理远程连接!Remote Desktop Manager 全方位使用指南
  • 对接连连支付(四)-- 收款查询
  • 数据结构:单链表的应用(力扣算法题)第一章
  • 迅睿CMS自定义网站表单:HTML方式调用Select下拉选项数据指南
  • Winsock 操作指南
  • 宝塔面板零基础搭建 WordPress 个人博客与外贸网站 | 新手10分钟上手指南
  • vscode 调试 指定 python文件 运行路径
  • 嵌入式Linux自学不走弯路!670+讲课程!系统学习路线:入门+应用+ARM+驱动+移植+项目 (STM32MP157开发板)
  • Libvio访问异常排查指南
  • 《从有限元到深度学习:我的金属疲劳研究进阶之路》
  • Paimon——官网阅读:主键表
  • 【Kafka】项目整合使用案例
  • 解开 Ansible 任务复用谜题:过滤器用法、Include/Import 本质差异与任务文件价值详解
  • CPU 虚拟化之Cpu Models
  • 微算法科技(NASDAQ:MLGO)突破性FPGA仿真算法技术助力Grover搜索,显著提升量子计算仿真效率
  • 【LwIP源码学习7】ICMP部分源码分析
  • 【工具篇2】Gitee导入github repo作为持续的镜像站,自建 GitHub 镜像仓库详细步骤
  • Web转uni-app
  • 如何使用 Xshell 8 连接到一台 CentOS 7 电脑(服务器)