2012-06-06 3 views
0

У меня есть событие, которое срабатывает при нажатии кнопки, которая вызывает хранимую процедуру, которая удаляет выбранную строку из базы данных.Сохраненная процедура ASP.NET 2.0 delete not working

В этой отладке я уже жестко закодировал хранимую процедуру с идентификатором, чтобы убедиться, что удаление работает на стороне SQL, поэтому я не буду публиковать хранимую процедуру. Я также зашел на свою страницу и, выбрав запись для удаления, убедитесь, что скрытое поле было установлено на идентификатор записи.

Когда я нажимаю, я вижу, что сообщение появляется, так что я вижу, как срабатывает кнопка, и это может быть что-то маленькое и глупое с моим кодом или проблемой с разрешениями, о которых я не знаю или где их искать.

Параметр хранимой процедуры является целым числом, и я не попадаю в ошибки catch или throwing любого типа, данные просто не удаляются.

Спасибо за любую помощь по этому вопросу, как всегда это очень ценится.

Это код, который срабатывает при нажатии кнопки.

if (isAdmin) 
{ 
    SqlConnection cnx = new SqlConnection(server); 
    SqlCommand cmd = new SqlCommand("STOREDPROCNAME", cnx); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.AddWithValue("@VARIABLEFORPROC", Convert.ToInt16(hiddenfield1.Value.ToString())); 

    try 
    { 
     cnx.Open(); 
     cmd.ExecuteNonQuery(); 
     cnx.Close(); 
    } 
    catch (Exception ex) 
    { 
     throw new Exception("Error executing MyProcedureName.", ex); 
    } 
} 

fillDataGrids(); 
+0

и IsAdmin явно устанавливается истина пока я не добавил, что функциональность еще. –

+0

Вы прошли через код и подтвердили, что значение скрытого поля, которое вы используете в качестве параметра, является допустимым значением? –

+0

Вы пытались запустить SQL Profiler, чтобы убедиться, что запрос действительно достигает SQL Server? –

ответ

2

The SQL Int type maps to the C# Int32 type. Возможно, вы потеряете данные во время конверсии. Попробуйте заменить

cmd.Parameters.AddWithValue("@VARIABLEFORPROC", Convert.ToInt16(hiddenfield1.Value.ToString())); 

с

cmd.Parameters.AddWithValue("@VARIABLEFORPROC", Convert.ToInt32(hiddenfield1.Value.ToString())); 
+0

Мел один для маленьких и глупых. Спасибо, Джон решил мою проблему. –

0

вы должны попробовать хранимую точность процедуры в SQL после того, чтобы попытаться его на транзакции и регистрировать исключение на БД вы должны быть уверены, где ошибка происходит