Android SQLite查询混乱,小于大于
我给一个函数一天一小时,我想在两个文本非空列列_FROM1和列_TO1之间获取列_DAY1=DAY和HOUR。奇怪的是,如果我给出7小时,从1到1分别包含6和9,它将返回一个正搜索。如果我给12小时,从1到1,分别包含11和17,搜索就可以了 但是,当我分别给出7和FROM1以及TO1包含6和10时,搜索不起作用。我认为这与10是两位数,6是一位数或者类似的东西有关。 下面是我使用的光标查询,请帮助,我做错了什么Android SQLite查询混乱,小于大于,android,database,search,sqlite,Android,Database,Search,Sqlite,我给一个函数一天一小时,我想在两个文本非空列列_FROM1和列_TO1之间获取列_DAY1=DAY和HOUR。奇怪的是,如果我给出7小时,从1到1分别包含6和9,它将返回一个正搜索。如果我给12小时,从1到1,分别包含11和17,搜索就可以了 但是,当我分别给出7和FROM1以及TO1包含6和10时,搜索不起作用。我认为这与10是两位数,6是一位数或者类似的东西有关。 下面是我使用的光标查询,请帮助,我做错了什么 Cursor cursor = database.query(MySQLiteHe
Cursor cursor = database.query(MySQLiteHelper.TABLE_COMMENTS,
allColumns, MySQLiteHelper.COLUMN_DAY1 +" ='" + Day+
"' AND " +MySQLiteHelper.COLUMN_FROM1 + " <=" + Hour+
" AND " +MySQLiteHelper.COLUMN_TO1+ " >" +Hour
, null, null, null, null);
找到了答案
解析未正确完成,行尾字符\r导致SQLite数据库无法将结尾“9”识别为9
时出现问题。增加了这一行:
comment = comment.replaceAll("(\\r|\\n)", "");
在我用分隔符解析数据之前,\t它起作用了 你的描述不清楚。哪些记录应该返回?@cl-我取得了一些进展,所以我完全编辑了这个问题。请再看一遍。数据库中的值和变量的类型是什么?请显示插入from/to值的代码。这些值不是空文本。我将添加代码。我将它从TXT复制到DB。插入from/to值的代码将在
createComment
函数中。
public Comment createComment(String comment) {
ContentValues values = new ContentValues();
//parse data in string comment
String[] words = comment.split("\\t");
values.put(MySQLiteHelper.COLUMN_COMMENT, comment);
values.put(MySQLiteHelper.COLUMN_NAME, words[0]); //adds to column "name"
values.put(MySQLiteHelper.COLUMN_CONTACT, words[1]);
values.put(MySQLiteHelper.COLUMN_DAY1, words[2]);
values.put(MySQLiteHelper.COLUMN_FROM1, words[3]);
values.put(MySQLiteHelper.COLUMN_TO1, words[4]);
values.put(MySQLiteHelper.COLUMN_DAY2, words[5]);
values.put(MySQLiteHelper.COLUMN_FROM2, words[6]);
values.put(MySQLiteHelper.COLUMN_TO2, words[7]);
//expected error above after DAY2 since it can be NULL
long insertId = database.insert(MySQLiteHelper.TABLE_COMMENTS, null,
values);
Cursor cursor = database.query(MySQLiteHelper.TABLE_COMMENTS,
allColumns, MySQLiteHelper.COLUMN_ID + " = " + insertId, null,
null, null, null);
cursor.moveToFirst();
Comment newComment = cursorToComment(cursor);
cursor.close();
return newComment;
}
comment = comment.replaceAll("(\\r|\\n)", "");