создание динамического sqlite-запроса в нативном коде - PullRequest
0 голосов
/ 22 октября 2011

Я работаю над приложением для Android, в котором я использую некоторый нативный код C ++. В нативном коде я запрашиваю базу данных sqlite и отправляю результат вызывающей функции в Java. Проблема в том, что мои sqlite-запросы должны быть динамическими в зависимости от значения переменной int в собственном коде. Таким образом, в основном запрос не является простой строкой, но должен быть объединен с переменной int перед отправкой в ​​sqlite.

Мне нужна помощь в построении запроса.

Любая помощь будет оценена.

Спасибо, Аби

Ответы [ 2 ]

0 голосов
/ 24 октября 2011

Я получил это работает.Переменная "LongInt" - это длинная переменная со знаком, которая содержит 10-12-значное целое число.

char afterTime[100] = "SELECT _id FROM Picture where Time>%lld";
char afterTemp[100];
sprintf(afterTemp, "%lld", LongInt);
strcat(afterTime, afterTemp);

И она отлично работает!Я одновременно ищу альтернативные решения.

Спасибо, Ab

0 голосов
/ 22 октября 2011

Не ясно, является ли int буквально int или используется в качестве индекса, но, безусловно, будет работать одно из следующих действий:

char *baseQuery = "SELECT * FROM myTable WHERE field=%d";
char *finalQuery = asprintf(baseQuery, magicInt);

Или, альтернативно,

char *magicStrings[4] = { "fish", "apple", "penguin", "rutabaga" };
char *baseQuery = "SELECT * FROM myTable WHERE field='%s'";
char *finalQuery = asprintf(baseQuery, magicStrings[magicInt]);

А затем выполнить запрос в finalQuery

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