Я использую asp.net 4.5, C # и SQL Express с пятью текстовыми полями. Передаваемые значения - это числа от 0 до 99. При вставке чисел с помощью ExecuteNonQuery система зависает на 30 или более секунд.
Во время отладки VS я проверил, что данные фактически записываются в базу данных, однако ExecuteNonQuery никогда не завершается.
Я пробовал несколько методов, включая преобразование (TryParse и Convert ) с одинаковыми результатами. Я также создал простую тестовую страницу с пятью текстовыми полями, но показывает ту же проблему. Эта проблема терпит неудачу с жестким кодированием так же как хранимой процедурой. Использование элемента управления SQLDatasource работает, но предпочтение отдается кодированию с использованием C #. Поля используются только для чисел и будут рассчитываться при составлении отчетов.
Примечание: я предполагаю, что значение необходимо преобразовать из строки в INT.
Структура таблицы:
[StatID] [int] IDENTITY(1,1) NOT NULL,
[Made2PT] [int] NULL, [Missed2PT] [int] NULL,
Хранимая процедура:
@Made2Pt Int, @Missed2pt Int
AS
BEGIN
INSERT INTO tblStatsV2(Made2Pt,Missed2pt)
VALUES (@Made2Pt,@Missed2pt)
код C # за образцом, страница частичного тестирования с двумя текстовыми полями :
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@Made2Pt", txtMade2PT.Text == "" ? 0 :
Convert.ToInt32(txtMade2PT.Text));
sqlCmd.Parameters.AddWithValue("@Missed2pt",txtMade2PT.Text == "" ? 0 :
Convert.ToInt32(txtMissed2PT.Text));`
Частичный пример кода от другой страницы:
cmd.CommandType = CommandType.StoredProcedure;
if (int.TryParse(txt2ptMade.Text, out made2PT))
{
cmd.Parameters.Add("@Made2Pt", SqlDbType.Int).Value = made2PT;
}
Я ожидаю, что запись вернется менее чем за секунду, поскольку мои другие страницы имеют быстрый ответ.