Как убрать экранирование апострофа в c#?

Беру с сервера имена всех таблиц. После чего пытаюсь получить доступ к таблице по одному из полученному имени.

MySqlCommand command = new MySqlCommand("SELECT * FROM @table", db.getConnection());
command.Parameters.Add("@table", MySqlDbType.String).Value = '`' + nameTable + '`';

Но выходит ошибка:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''`физические лица - клиенты`'' at line 1

Я понял, что мои апострофы экранируются. Как мне убрать это экранирование? При этом данное экранирование происходит только при передачи sql запроса на сервер. В программе если вывести данную строку в label, то она будет нормальной. Я пробовал бороться не писать на прямую апостроф, а ставить /x027 - не помогло. Я пробовал делать экранирование апострофа /` - но такой escape-последовательности не существует. Одинарная кавычка для sql не подходит. Он не воспринимает ее. Также если передать sql запрос на прямую с именем таблицы, то все работает исправно.

"SELECT * FROM `физические лица - клиенты` 

Но мне необходимо динамически получать имена таблиц и отображать их содержимое.

введите сюда описание изображения

Такая ошибка и с @ и без него. С экранированием и без него. С одинарными кавычками @ не работает. Без него появляется слэш


Ответы (1 шт):

Автор решения: AlexGrand

Я недавно решил подобную проблему так, правда, в SQLite, но я думаю и тут подойдет: Нужно добавить параметр отдельно, а не собиранием строки/экранированием. т.е cmd.Parameters.AddWithValue("@newValue", newValue);

using (SQLiteConnection Connect = new SQLiteConnection(@"Data Source =" + Application.StartupPath + @"\GridProjectDB.db; version = 3"))
                {
                    Connect.Open();
                    SQLiteCommand cmd = new SQLiteCommand
                    {
                        Connection = Connect,
                        CommandText = $@"UPDATE GridProjectTable
                                     SET {col} = (@newValue)
                                     WHERE GUID = '{thisRowObject.GUID}'"
                    };
                    cmd.Parameters.AddWithValue("@newValue", newValue);
                    cmd.Prepare();
                    cmd.ExecuteNonQuery();
                    Connect.Close();
                }
→ Ссылка