Вложенные запросы в SQLite3 Android - PullRequest
0 голосов
/ 18 января 2011

Я хочу выполнить запрос примерно так:

INSERT INTO MyTable VALUES(datetime('now'));

Где MyTable имеет схему:

CREATE TABLE MyTable(
mydate DATETIME
)

При выполнении в SQLite Manager запрос отлично выполняется, вставляя текущее значение даты и времени в столбец mydate MyTable.

Но при выполнении с использованием

ContentValues cv=new ContentValues();
cv.put(MyTable.mydate,"datetime('now')");
getContentResolver.insert(MyTable.CONTENT_URI,cv);

Значение в mydate читается как datetime («сейчас») , а не фактические текущие дата и время.

Я выполняю все это из ContentProvider.

Как я могу это исправить?

1 Ответ

1 голос
/ 18 января 2011

Вы не можете использовать функции SQLite в вызовах query(), независимо от того, вызывается ли query() на SQLiteDatabase или на ContentResolver.

Вы можете встроить вызовы функций SQLite в оператор SQLвыполняется через rawQuery() на SQLiteDatabase, но это может вам немного помочь, если вы хотите обернуть доступ к своей базе данных в контент-провайдере.

Самый простой ответ для вас - настроить схему так, чтобы mydate имеет значение по умолчанию datetime('now'), затем просто игнорируйте этот столбец при вставке данных.

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