Как использовать строковую переменную в качестве имени таблицы в SQL-запросе

#winforms #ms-access

#winforms #ms-access

Вопрос:

Создаю приложение winforms, и я хочу, чтобы имя таблицы в моем SQL-запросе было равно переменной, которую я вызвал TreeCodeName . Это мой код:

 private void button1_Click(object sender, EventArgs e)
        {
            string TreeNodeName = treeView1.SelectedNode.Name.ToString();
            if ((TreeNodeName == "BOOKS") || (TreeNodeName == "CARDS") || (TreeNodeName == "COMPUTERS") || (TreeNodeName == "CONSOLES") || (TreeNodeName == "DEVICES") || (TreeNodeName == "DONORS") || (TreeNodeName == "MAGAZINES") || (TreeNodeName == "MOTHERBOARDS") || (TreeNodeName == "OTHERS") || (TreeNodeName == "PARTS") || (TreeNodeName == "PERIPHERALS") || (TreeNodeName == "POWER_SUPPLY") || (TreeNodeName == "PROCESSORS") || (TreeNodeName == "RAMS") || (TreeNodeName == "SOFTWARE") || (TreeNodeName == "STORAGE") || (TreeNodeName == "TERMINALS"))
            {
                try
                {
                    connection.Open();
                    OleDbCommand command = new OleDbCommand();
                    command.Connection = connection;
                    string query = "select * From Table Where Title = @Title";
                    command.Parameters.AddWithValue("@Title", TreeNodeName);
                    command.CommandText = query;

                    OleDbDataAdapter da = new OleDbDataAdapter(command);
                    DataSet ds = new DataSet();
                    da.Fill(ds);
                    dataGridView1.DataSource = ds.Tables[0];

                    connection.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error   "   ex);
                }

            }
  

Всякий раз, когда я пытаюсь это протестировать, я сталкиваюсь с ошибкой, в которой говорится, что в FROM произошла синтаксическая ошибка. Есть ли способ спасти это?

Комментарии:

1. обновите строку запроса до: string query = $"select * From {TreeNodeName} Where Title = @Title";

2. проверьте также, правильно ли вы передаете здесь параметр command.Parameters.AddWithValue("@Title", TreeNodeName); . Не похоже, что вы передаете Title элемент.