2011-01-18 21 views
0

私のようなクエリ何か実行したい:ネストされたクエリ

MyTableスキーマを持っている
INSERT INTO MyTable VALUES(datetime('now')); 

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に該当の値は日時(「今」)はなく、実際の現在の日付と時刻を読み込みます。

これをすべてContentProviderから実行しています。

どうすればこの問題を解決できますか?

答えて

1

あなたはquery()SQLiteDatabase上またはContentResolverに呼び出されたかどうか、query()への呼び出しでSQLiteの機能を使用することはできません。

SQLiteDatabaserawQuery()で実行されるSQL文でSQLite関数への呼び出しを埋め込むことはできますが、コンテンツプロバイダでデータベースアクセスをラップする場合にはあまり役に立ちません。

mydateのデフォルト値がdatetime('now')になるようにスキーマを調整してから、データを挿入するときにその列を無視するだけです。

+0

ニース私はあなたの本を読む:)あなたは良いアプローチを提案している。 – Shardul

+0

@Shardul:どうぞよろしくお願いいたします。私はそのデフォルト値を、データベース行の "created at"値のために常に使います。とても便利な! – CommonsWare

関連する問題