在ContentValues中查询

时间:2016-01-14 10:12:30

标签: android performance sqlite cursor content-values

我必须在 SQLite数据库和一些表中插入很多行 必须使用其他表的值将每行的特定值转换为另一行。 实际上,我有这个功能运作良好:

public void myFunction( String tableName, String attrName, ContentValues currentVal ) { 

    SQLiteDatabase database = this.getReadableDatabase();
    Cursor c = database.rawQuery("SELECT colName FROM "+tableName+" WHERE "+tableName+".otherColName = " + currentVal.getAsString(attrName), null);

    Long realValue = null;
    if( c.moveToFirst() ) { 
        realValue = c.getLong(0);
    }
    if( c != null ) c.close();

    currentVal.put( attrName, realValue );

}

但是,由于这部分原因,这确实是时间的消亡:

if( c.moveToFirst() ) { 
    realValue = c.getLong(0);
}

所以我想知道是否有办法直接在ContantValue的值中设置查询,如下所示:

currentVal.put( attrName, "SELECT colName FROM "+tableName+" WHERE "+tableName+".otherColName = " + currentVal.getAsString(attrName));

并且查询将与插入查询同时执行,以便替换值。

事先谢谢!

1 个答案:

答案 0 :(得分:1)

不,ContentValues只是数据哈希映射的包装器。您可以尝试使用索引来加速查询。