2011-01-18 2 views
0

Я хочу, чтобы выполнить что-то запрос, как:Вложенные запросы в SQLite3 Android

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

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

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

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

+0

Nice thanx. Я читал твои книги сэр :) Вы предложили хороший подход. – Shardul

+0

@ Шардул: Добро пожаловать. Я использую этот трюк значения по умолчанию все время для значения «created at» в моих строках базы данных. Очень удобно! – CommonsWare

Смежные вопросы