2012-01-31 10 views
2

私はテーブルT1を持っています。テーブルT1には、juliandayを表すfloat型の列があります。今、juliandayがn日より古いエントリを削除したいと思います。私が試した:Android SQLiteのwhere節に引数を含めるにはどうすればいいですか?

db.delete(T1, COL_JULIANDAY + " <= julianday('now', '- ? days')", 
    new String[] { Integer.toString(days) }); 

しかし、私は、Androidからのエラーました: '?'

android.database.sqlite.SQLiteException: bind or column index out of range 

私はそれがあるためだと思うがマークは私のwhere節で引用されます。ご希望の場合は、単にdb.execSQL(statement);

db.execSQL("delete from "+T1+" where COL_JULIANDAY <= julianday('"+days+"')"); 
+0

あなたは何を削除しようとしていますか?これは正しい構文です。db.delete(table、whereClause、whereArgs) – Lucifer

+0

はい、構文は正しいです。 APIは '?'を認識できません。引用符で囲みます。それは '?'を扱う。私のコードでリテラルとして '?'マーク... – davidshen84

+0

あなたはlalitのコードを試しましたか? – Lucifer

答えて

1

生のSQLに頼るのではなく、where節で連結演算子を使用することをお勧めします。

db.delete(T1, COL_JULIANDAY + " <= julianday('now', '- ' || ? || ' days')", 
    new String[] { Integer.toString(days) }); 
0

同じであること

julianday('now') - ? 
0
julianday('now', '- ? days') 

でSQLクエリを使用することができますする必要があり、私はそれをチェックしていない、まだこれは、私はそれがあるべきだと思うかである、

db.delete(T1, COL_JULIANDAY + " <= julianday(?)", new String[] 
                { Integer.toString(days) }); 

+0

私はこの場合幸運だと思います。しかし、私がジュリアンディ( '今'、 ' - ?月')をしたいのであればどうしますか? – davidshen84

関連する問題