从sqlite中选择日期范围

时间:2015-03-10 17:38:09

标签: android database sqlite

我真的需要你的帮助。 我从数据库获取值时遇到问题。我有两个editTexts和一个Button。当我插入日期并按Button时,我的表格打开时没有数据。如何让我的数据库读取editText个值?

我的代码:

String val1=minDate.getText().toString();

String val2=maxDate.getText().toString();

Cursor c=database.rawQuery("SELECT * from  TABLE WHERE DATE BETWEEN '"+ val1+"'  AND '"+ val2+"' ", null);

2 个答案:

答案 0 :(得分:1)

请参阅文件: http://developer.android.com/guide/topics/data/data-storage.html#db

要避免SQL注入,请不要通过连接值将参数添加到查询中。要创建查询,请参阅:http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query%28java.lang.String,%20java.lang.String[],%20java.lang.String,%20java.lang.String[],%20java.lang.String,%20java.lang.String,%20java.lang.String%29

安全提示: http://developer.android.com/training/articles/security-tips.html#ContentProviders

如何在表格中存储日期?哪种格式? 在查询格式中添加参数时必须相同。 如果要使用BETWEEN关键字,则必须以以下格式存储日期:年份 - 月份日期由SQLite排序。

更新1

您将日期格式更改为yyyy-mm-dd 当然,查询中的参数必须具有相同的格式。 将查询放入变量并在之前记录,如下所示:

String query = "SELECT * from  TABLE WHERE DATE BETWEEN '"+ val1+"'  AND '"+ val2+"' ";
Log.d("MyQuery", query);
Cursor c=database.rawQuery(query, null);

在logcat中搜索TAG“MyQuery”并发布查询值

答案 1 :(得分:1)

现在用下面的代码替换你的代码,让我知道你在Logs中得到了什么

 Cursor cursor=database.rawQuery("SELECT * from  TABLE WHERE DATE >='"+val1+ "' AND <= '"+val2+ "'", null);

        if (cursor.moveToFirst()) {
            do {

                Log.i("cursor_Data",cursor.getString(cursor.getColumnIndex("Date")));

            } while (cursor.moveToNext());
        }

如果以上不适合您,请发布您的TABLE结构吗?