当我使用参数时,SqlDataAdapter.Fill 永远不会结束
Posted
技术标签:
【中文标题】当我使用参数时,SqlDataAdapter.Fill 永远不会结束【英文标题】:SqlDataAdapter.Fill never ends when I use parameters 【发布时间】:2019-03-20 22:18:41 【问题描述】:我在选择查询中使用参数时遇到问题。
sqlCommand cmd = new SqlCommand(con);
cmd.commandText = "SELECT TOP 1 * FROM tbl WHERE SN=@SN"
cmd.Parameters.Add(new SqlParamter("@SN", "N900"));
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt); // TIMES OUT
但是当我在没有参数的情况下运行它时,我可以完美运行,只需 1 秒即可响应。
cmd.commandText = "SELECT TOP 1 * FROM tbl WHERE SN='N900'"
有什么想法吗?
我可以添加表格是一个视图。
我想通了,有两种选择, 1.重新编译视图 2.在查询末尾添加“Option(Recompile)”
【问题讨论】:
【参考方案1】:所以我不确定为什么它不适合你。下面是一个我知道有效的简单示例。
var sqlCommand = new SqlCommand();
sqlCommand.Connection = new SqlConnection("<YOUR_CONNECTION_STRING>");
sqlCommand.CommandText = @"SELECT * FROM (SELECT 'N900' as SN
UNION
SELECT 'N901') AS A
WHERE A.SN = @SN";
sqlCommand.Parameters.Add(new SqlParameter("@SN", "N900"));
var sqlDataAdapter = new SqlDataAdapter(sqlCommand);
var dataTable = new DataTable();
sqlDataAdapter.Fill(dataTable);
【讨论】:
【参考方案2】:我想通了,有两种选择, 1.重新编译视图 2.在查询末尾添加“Option(Recompile)”
【讨论】:
以上是关于当我使用参数时,SqlDataAdapter.Fill 永远不会结束的主要内容,如果未能解决你的问题,请参考以下文章
当我使用可变参数时,它适用于 int 和 double,但是当涉及到 float 时,会发生错误
为啥当我第二次使用完全相同的参数调用 IMMUTABLE 函数时,计划时间会加倍?
modx - 当我在同上片段中使用“&documents =”参数时,分页不起作用
当我使用 regasm 时,所有参数都输入为输入?那可以改变吗?
在 C# 中,当我使用该对象作为参数时,如何对该对象执行方法?
当我使用 Mock Service Worker 测试两个 get 请求时,为啥 req.url.searchParams 参数对象为空?