我只想接收来自KEY_EXAMPLE列的记录。当KEY_EXAMPLE列具有“ 1234”或“ 1234a”之类的记录时,代码将显示此类记录,但是当其具有诸如“ abcd”之类的记录时,则不会显示。
我试图看看为什么它不希望显示信件记录,我认为问题出在“选择”上,但是我不知道怎么写。
public static final String _id = BaseColumns._ID;
public static final String KEY_EXAMPLE = "Example";
private static final String SCRIPT_CREATE_DATABASE =
"create table " + MYDATABASE_TABLE + " ("
+ _id + " integer primary key autoincrement, "
+ KEY_X + " text, "
+ KEY_Y + " text,"
+ KEY_EXAMPLE + " text);";
public Cursor showRecordsFromExample(){
String[] selectedColumn = new String[]{_id, KEY_EXAMPLE};
Cursor selectedCursor = sqLiteDatabase.query(MYDATABASE_TABLE, selectedColumn,
"Example", null, null,
null, null);
return selectedCursor;
}
为什么只显示数字或数字+字母记录?如何使其也显示字母记录?
答案 0 :(得分:2)
为什么只显示数字或数字+字母记录?
原因是WHERE子句(查询方法的第3个参数)很可能不是预期的表达式。
实际上是您在使用:-
SELECT _id,Example FROM mytable WHERE Example;
因此,示例列被视为比较的结果,它为false或true(0或1)。
以 abcd (非数字形式)为0 false。
首先遇到数字时,例如 123 或 123ABC ,则SQlite会考虑该数值,如果该数值不为0,则为true。
错误的行(0)将被忽略,包括正确的行(非0),因此是结果。
如何使其也显示字母记录?
如果您使用过:-
public Cursor showRecordsFromExample(){
String[] selectedColumn = new String[]{_id, KEY_EXAMPLE};
Cursor selectedCursor = sqLiteDatabase.query(MYDATABASE_TABLE, selectedColumn,
null, null, null,
null, null);
return selectedCursor;
}
然后您将获得所有行的值。
如果您要使用:-
public Cursor showRecordsFromExample(){
String[] selectedColumn = new String[]{_id, KEY_EXAMPLE};
Cursor selectedCursor = sqLiteDatabase.query(MYDATABASE_TABLE, selectedColumn,
KEY_EXAMPLE + " LIKE '%a%'", null, null,
null, null);
}
这将返回“示例”列中任何位置具有a或A的所有行。