我真的需要你的帮助。
我从数据库获取值时遇到问题。我有两个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);
答案 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结构吗?