2014-09-21 104 views
0

我有兩個表,通過下面的語句創建的:如何使用參數搜索數字?

create table maintable (_id integer primary key, name) 
    create table foreigntable (_id integer primary key, object, foreign key (object) references maintable(_id) 

我想查詢foreigntablemaintable引用特定對象的所有項目。假設maintable中感興趣的id存儲在objectId中。

爲什麼下面的代碼沒有返回結果?

Cursor dataCursor = database.query("foreigntable", null, "object=?", new String[] { Long.toString(objectId)}, null, null, null); 

我得到下面的查詢結果:

Cursor dataCursor = database.rawQuery("select * from foreigntable where object=" + objectId, null); 

什麼也可以工作:

Cursor dataCursor = database.query("foreigntable", null, "object="+objectId, null, null, null, null); 

回答

1
"object=?", new String[] { Long.toString(objectId)} 

此代碼對字符串的object列中的值進行比較。 這種比較總是會失敗,因爲數字不是字符串。

儘管使用參數通常是一個好主意,但Android的數據庫API只允許使用字符串,並且當您有數字時,應將其直接插入到SQL查詢字符串中。

+0

無賴,謝謝!就我個人而言,我不同意這種設計,但肯定有一個解釋。 – nyi 2014-09-22 08:59:35