当我使用参数时,SqlDataAdapter.Fill永远不会结束

时间:2019-03-20 22:18:41

标签: parameters timeout fill sqldataadapter

我在选择查询中使用参数时遇到问题。

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)”的末尾添加

2 个答案:

答案 0 :(得分:0)

所以我不确定为什么它对您不起作用。这是一个我知道有效的简单示例。

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);

答案 1 :(得分:0)

我想出了两种选择, 1.重新编译视图 2.在查询“ Option(Recompile)”的末尾添加