我正在移植适用于Android操作系统的iOS代码.我执行一堆查询,将查询结果插入临时表.当所有查询完成后,我将临时表中的所有结果都捕获到我自己创建的对象集合中.我正在使用临时表,而不是直接选择集合,因为我相信它执行得更快,或者至少在iOS端执行.我的问题是execSQL()没有像我期望的那样工作,这里是代码:
db.execSQL("CREATE TEMPORARY TABLE SearchResults(Name text);");
db.execSQL("INSERT INTO SearchResults (Name) SELECT Name FROM ProductNames WHERE NameLower MATCH '" + termLowerCase + "*';");
db.execSQL("INSERT INTO SearchResults (Name) SELECT Name FROM BrandNames WHERE NameLower MATCH '" + termLowerCase + "*';");
Run Code Online (Sandbox Code Playgroud)
当我执行这段代码时,我只从第一次使用INSERT的execSQL()调用中得到一行.我知道ProductNames表中有多个结果应该与我的术语匹配,我知道BrandNames表中有数百行应该与我的术语相匹配.如果我将代码更改为:
Cursor cursor = db.rawQuery("SELECT Name FROM ProductNames WHERE NameLower MATCH '" + termLowerCase + "*'", null);
cursor.moveToFirst();
while (!cursor.isAfterLast())
{
resultSet.add(cursor.getString(0));
cursor.moveToNext();
}
cursor.close();
cursor = db.rawQuery("SELECT Name FROM BrandNames WHERE NameLower MATCH '" + termLowerCase + "*'", null);
cursor.moveToFirst();
while …Run Code Online (Sandbox Code Playgroud)