C#中如何执行存储过程方法
- 作者: 过22318162
- 来源: 51数据库
- 2021-09-04
功能 : 根据调用的方法名称 反射动态调用 sql command 的方法
/// <summary>
/// 存储过程的属性
/// procname 存储过程的名称
/// methodname 执行sqlcommand 方法的名称
/// prmlist 存储过程的参数
/// </summary>
public class exeproc
{
public string procname;
public string methodname;
public object[] prmvalue;
}
根据制定的存储过程的名称
和参数 来执行指定的存储过程 和 调用 sqlcommand 的方法
public class datahelper
{
private string connstring = null;
public datahelper(string constr)
{
this.connstring = constr;
}
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="ep">执行存储过程的属性
/// procname 存储过程的名称
/// methodname 执行sqlcommand 方法的名称
/// prmlist 存储过程的参数
/// </param>
/// <returns>返回执行的结果</returns>
public object execprocretobj(exeproc ep)
{
if (this.connstring != null && this.connstring != string.empty)
{
try
{
sqlconnection con = new sqlconnection(this.connstring);
sqlcommand cmd = new sqlcommand();
cmd.connection = con;
cmd.commandtext = "exec " + ep.procname + " ";
foreach (object obj in ep.prmvalue)
{
cmd.commandtext += obj + ",";
}
cmd.commandtext = cmd.commandtext.remove(cmd.commandtext.length - 1, 1);
type ty = cmd.gettype();
con.open();
//用反射根据输入的方法名 执行对应的方法
object retobj = ty.invokemember(ep.methodname, bindingflags.invokemethod, null, cmd, null);
if (retobj.gettype().fullname == "system.data.sqlclient.sqldatareader")
{
//将返回的object 转换成datatable
datatable retdt = new datatable();
retdt.load(retobj as sqldatareader);
con.close();
con.dispose();
return retdt;
}
return retobj;
}
catch (exception ex)
{
system.windows.forms.messagebox.show("获取数据发生错误\n" + ex.message);
}
}
return null;
}
}
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
