我不认为您的问题与查询有关,使用它可以正常工作:-
public class SO51108624DBHelper extends SQLiteOpenHelper {
public static final String DBNAME = "worddb";
public static final int DBVERSION = 1;
public static final String TB_MAIN_WORDS = "tbl_main_words";
public static final String COL_WORDID = "word_id";
public static final String COL_WORDENG = "word_eng";
SQLiteDatabase mDB;
public SO51108624DBHelper(Context context) {
super(context, DBNAME, null, DBVERSION);
mDB = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
String crtsql = "CREATE TABLE IF NOT EXISTS " + TB_MAIN_WORDS + "(" +
COL_WORDID + " INTEGER PRIMARY KEY," +
COL_WORDENG + " TEXT" +
")";
db.execSQL(crtsql);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
public long addRow(String word) {
ContentValues cv = new ContentValues();
cv.put(COL_WORDENG,word);
return mDB.insert(TB_MAIN_WORDS,null,cv);
}
public void populateMainWordsTable() {
mDB.delete(TB_MAIN_WORDS,null,null);
for (int i=0; i < 1000; i++) {
addRow("test");
}
}
public int getWordCountBetweenIDs() {
String sql = "SELECT * FROM tbl_main_words WHERE word_id BETWEEN 1 AND 500 ORDER BY word_eng";
Cursor csr = mDB.rawQuery(sql,null);
int rv = csr.getCount();
csr.close();
return rv;
}
}
还有:-
SO51108624DBHelper mDBHlpr = new SO51108624DBHelper(this);
mDBHlpr.populateMainWordsTable();
int rowcount = mDBHlpr.getWordCountBetweenIDs();
Log.d("ROWCOUNT", "Number of rows returned was " + String.valueOf(rowcount));
导致:-
06-29 22:29:39.193 1452-1452/soanswers.soanswers D/ROWCOUNT: Number of rows returned was 500
因此,当您运行它时,表本身很可能是空的。这假设您没有遗漏任何错误,例如未找到列/表。
您可以尝试使用:-
Log.d ("ROWCOUNT","Number of rows in tbl_main_words is " + String.valueOf(DatabaseUtils.queryNumEntries(myDb,"tbl_main_words")));
Cursor cursor = myDb.rawQuery("SELECT * FROM tbl_main_words WHERE word_id BETWEEN 1 AND 500 ORDER BY word_eng",null)
然后检查应该有类似的日志:-
06-29 22:36:54.232 1529-1529/soanswers.soanswers D/ROWCOUNT:数量
tbl_main_words 中的行数为 1000