Задать вопрос
@Andrew1000000

Странности в работе SQLite на C#: почему некорректно выполняется запрос с параметром?

Вот пример кода, который некорректно выполняется
cmd = conn.CreateCommand();
cmd.CommandText = "SELECT @s FROM Cars";
cmd.Parameters.Add("@s", DbType.String).Value = "Id";
r = cmd.ExecuteReader();
while (r.Read())
{
    MessageBox.Show(r.GetValue(0).ToString());
    //MessageBox.Show(r["Id"].ToString());
}
r.Close();

Запрос возвращает строку "Id" пять раз (по количеству записей в таблице), а должен, очевидно, вывести:
1
2
3
4
5

Если раскомментировать вторую строчку, выскакивает ошибка IndexOutOfBoundsException.
В чём может быть причина?
  • Вопрос задан
  • 2504 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Sumor
Не получится параметрами SQL задать названия колонок в SQL.
У вас в итоге получился запрос
SELECT 'id' FROM Cars
Который и выполнился. Как вы и попросили: SQL отобрал записи из таблицы Cars (5 штук) и при выдаче каждой выдал строку 'id' как вы и просили.
Колонки id в запросе нет. Есть безымянная колонка. Поэтому попытка выдать колонку, которой нет, приводит к IndexOutOfBoundsException.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы