Не сбой при отсутствии столбца в запросе SQLLite - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть простой запрос, подобный следующему:

SELECT * FROM CUSTOMERS WHERE CUSTID LIKE '~' AND BANKNO LIKE '~'

Проблема в том, что таблица клиентов может содержать или не содержать столбец BANKNO, в зависимости от обстоятельств, которые я не контролирую.Однако, если BANKNO не является столбцом в CUSTOMERS, этот запрос не выполняется.

Поэтому мой вопрос: можно проверить, существует ли столбец BANKNO и, если да, включить его в запрос и, если нет, исключитьэтот столбец?

Запрос действительно должен быть гибким.

1 Ответ

0 голосов
/ 18 сентября 2018

Несуществующий столбец в SELECT для sqlite3 всегда завершится ошибкой.

Один из вариантов может заключаться в том, чтобы поместить «полный» sql в блок try, а в случае ошибки выполнить другой sql..

Или, вы можете запросить PRAGMA table_info('CUSTOMERS') и запросить результат, чтобы увидеть, есть ли соответствующий столбец в базе данных.Найдите документ sqlite здесь https://www.sqlite.org/pragma.html#pragma_table_info.

Я уверен, что есть другие варианты, но суть в том, что вам нужно знать, прежде чем sql будет выполнен, что он содержит только допустимые имена столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...