#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
элемент.