Mam mały problem w moim C# kod w Asp.net podczas usuwania wiersza z serwera sql. Używam ExecuteNonQuery, aby określić, który komunikat wyświetlam na stronie. Jeśli ExecuteNonQuery zwróci wartość 1, wyświetli komunikat o pomyślnym zakończeniu. Tam, gdzie utknęłam, mam taką samą logikę dodawania rekordu i aktualizowania rekordu, a mój kod działa dobrze. Zobacz poniżej kod.ExecuteNonQuery powracający wartość 0 przy pomyślnym usunięciu rekordu
private void Delete_row(string ImageId)
{
string sSQL = "delete FROM dbo.Image_library_UK_temp where Image_id=" + ImageId;
using (SqlConnection dbConnection = new SqlConnection(app_settings.sql_conn_string_db))
{
try
{
//delete the row from db
dbConnection.Open();
SqlCommand command = new SqlCommand(sSQL, dbConnection);
command.CommandType = CommandType.Text;
command.CommandTimeout = 1024;
command.ExecuteNonQuery();
int rowsAffected = command.ExecuteNonQuery();
if (rowsAffected == 1)
{
messagepanel1.ShowSuccessMessage("The image " + txtImgTitle.Text + "has been deleted from the system.");
DisableValidation();
}
}
catch (Exception ex)
{
messagepanel1.ShowErrorMessage("Error: Deletion unsuccessful");
}
Session.RemoveAll();
generateTable(false);
}
}
wierszy obecnie zwraca 0. Jest to proste stwierdzenie SQL więc mój sql jest zakodowane w języku C# i nie używam procedura przechowywana.
Jakieś pomysły, jak mogę to wykonać?
Twój kod jest podatny na iniekcję SQL, która jest bardzo poważnym problemem bezpieczeństwa! – Yahia
próbowałeś uruchomić kwerendę bezpośrednio na serwerze sql? Czy to działa? – Dilberted
Ta strona jest dla wewnętrznych celów inaczej bym się zgodził. –