Вы должны всегда использовать параметризованные запросы, иначе ваш код подвержен ошибкам, таким как тот, который вы получаете, и еще хуже - атакам SQL-инъекций. Никогда не использует конкатенации строк, как в вашем коде, при построении SQL-запросов. Вот правильный путь:
using (var conn = new SqlConnection(ConnectionString))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "DELETE FROM tblCourses WHERE courseCode = @courseCode";
cmd.Parameters.AddWithValue("@courseCode", aCourseCode);
int deletedRowsCount = cmd.ExecuteNonQuery();
}
Это гарантирует, что даже если переменная aCourseCode
содержит некоторые экранирующие и опасные символы, они будут правильно обрабатываться.