Sqlite: как вставить переменную в строку в подготовленном выражении - PullRequest
1 голос
/ 04 марта 2010

Я использую оболочку Java для доступа к Sqlite, но я предполагаю, что это общий вопрос по Sqlite.

String stmt = "SELECT foo FROM bah WHERE foo='%/?/%';
PreparedStatement a = myConn.prepareStatement(stmt);

a.setString(1, "hello");
a.executeQuery();

... выдает исключение - ему не нравится?находясь внутри кавычек.Все в порядке, если я делаю

...WHERE foo=?

, но это не тот оператор, который мне нужен.

Как я могу вставить переменную в такой подготовленный оператор?Если вы забудете о том, что я использую Sqlite, как это делается с использованием других технологий баз данных?

Ответы [ 2 ]

4 голосов
/ 04 марта 2010

Ни одна база данных, с которой я столкнулся, не позволит вам поместить параметр в строковый литерал. Если бы это было поддержано, вам пришлось бы экранировать каждый символ ? в строке, которая не была параметром.

Однако вы можете использовать конкатенацию строк для поддержки того, что вам нужно:

SELECT foo FROM bah WHERE foo = '%/' || ? || '/%'
4 голосов
/ 04 марта 2010

Вы можете добавить подстановочный знак при установке значения:

String stmt = "SELECT foo FROM bah WHERE foo= ?"
PreparedStatement a = myConn.prepareStatement(stmt);
a.setString(1, "%hello%");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...