当前位置:  开发笔记 > 编程语言 > 正文

CommandType.Text与CommandType.StoredProcedure

如何解决《CommandType.Text与CommandType.StoredProcedure》经验,为你挑选了1个好方法。

显式使用StoredProcedure CommandType与仅使用Text Command相比有什么好处?换句话说,是

cmd = new SqlCommand("EXEC StoredProc(@p1, @p2)");
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@p1", 1);
cmd.Parameters.Add("@p2", 2);

比任何更糟糕的

cmd = new SqlCommand("StoredProc");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@p1", 1);
cmd.Parameters.Add("@p2", 2);

编辑:修复了错误的复制粘贴作业(再次).此外,问题的重点是数据访问类.我宁愿能够将存储的proc名称和参数传递到一行中,而不是每个参数的额外行.



1> Joel Coehoor..:

一个区别是消息泵送如何发生.

在我以前工作的地方,我们有一些过夜运行的批处理过程.其中许多只是涉及运行存储过程.我们曾经使用sql server作业调度这些作业,但是从它转移到相反从.Net程序调用程序.这使我们能够将所有计划任务保存在一个地方,甚至是那些与Sql Server无关的任务.

它还允许我们在调用过程的.Net程序中构建更好的日志记录功能,以便所有过夜进程的日志记录保持一致.存储过程将使用sql printraiserror函数,.Net程序将接收并记录这些.我们学到的是总是CommandType.StoredProcedure将这些消息缓冲到大约50个批处理中.无论您在连接上设置了什么选项或者您在连接中执行了什么操作,.Net代码在程序完成或刷新缓冲区之前都不会看到任何日志事件.你的SQL.为我们修好了.CommandType.Text

作为一个侧面问题,我将使用显式类型与您的查询参数.让.Net尝试推断您的参数类型可能会在某些情况下导致问题.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有