1

我必须在我的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));

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

预先感谢您!

4

1 回答 1

1

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

于 2016-01-14T10:33:34.343 回答