使用 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}"); } }
关键说明:
方法命名规范:
SqlHelper.dll
的核心方法通常与上述示例一致(ExecuteNonQuery
、ExecuteScalar
等),具体参数可能略有差异,需参考该 DLL 的文档。参数化查询:必须使用
SqlParameter
传递参数,避免 SQL 注入风险。资源释放:使用
SqlDataReader
时,建议用using
语句自动释放资源。连接字符串:通过配置文件管理,避免硬编码,方便后期修改。