Czy w ADO.NET istnieją ograniczenia, w których parametry SQL mogą być używane w zapytaniu SQL?

To pytanie służy jedynie celom edukacyjnym, ponieważ obecnie nie buduję żadnej aplikacji, która tworzy zapytania SQL za pomocą danych wprowadzanych przez użytkownika.

Mimo to wiem, że w ADO.NET możesz zapobiec SQL Injection, wykonując coś takiego:

OleDbCommand command = new OleDbCommand("SELECT * FROM Table WHERE Account = @2", connection);
command.Parameters.AddWithValue("@2", "ABC");

Ale zakładając, że twoja aplikacja została zaprojektowana w taki sposób, że użytkownik może rzeczywiście wpisać nazwę tabeli, czy możesz wykonać następujące czynności? (Nie obchodzi mnie, czy pozwolenie użytkownikom na podanie nazwy tabeli jest złym pomysłem, chcę tylko wiedzieć, czy możliwe jest następujące postępowanie ...)

OleDbCommand command = new OleDbCommand("SELECT * FROM @1 WHERE Account = @2", connection);
command.Parameters.AddWithValue("@1", "Table");
command.Parameters.AddWithValue("@2", "ABC");

Ciągle otrzymuję wyjątek, gdy uruchamiam drugi kod, mówiąc, że zapytanie SQL jest niekompletne i zastanawiałem się, czy problem polega na tym, że tego, co próbuję zrobić, po prostu nie da się zrobić lub jeśli coś przeoczę.

questionAnswers(1)

yourAnswerToTheQuestion