#parameters #timeout #fill #sqldataadapter
#параметры #тайм-аут #заполнение #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
но когда я запускаю его без параметров, i работает идеально, для ответа требуется всего 1 секунда.
cmd.commandText = "SELECT TOP 1 * FROM tbl WHERE SN='N900'"
Есть идеи?
Я могу добавить, что таблица является представлением.
Я понял, что есть два варианта: 1. Перекомпилировать представление 2. Добавить в конце запроса «Параметр (перекомпилировать)»
Ответ №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. Добавить в конце запроса «Параметр (перекомпилировать)»