java - SQlite WHERE 语句不起作用?

标签 java android sql

我正在制作一个应用程序,用于存储书名、添加日期和需要归还图书的日期。下面,我展示了 where 语句,该语句获取所有在今天和两天之间归还的书籍,并以 ListView 的形式返回。但是,它不起作用,我不确定哪里出错了:

    public Cursor fetchAllDue() {

    //get todays date
    Calendar cal=Calendar.getInstance();
    int currentDay=cal.get(Calendar.DAY_OF_MONTH);

    //Add days on to todays date
    cal.set(Calendar.DAY_OF_MONTH, currentDay+2);
    cal.getTime(); //Result

    //format back to string
    String formattedDate = new SimpleDateFormat("dd-MM-yyyy HH:mm").format(cal.getTime());


  //get todays date
    Calendar cal1=Calendar.getInstance();
    int currentDay1=cal1.get(Calendar.DAY_OF_MONTH);

    //Atodays date
    cal1.set(Calendar.DAY_OF_MONTH, currentDay1);
    cal1.getTime(); //Result

    //format back to string
    String formattedDate1 = new SimpleDateFormat("dd-MM-yyyy HH:mm").format(cal1.getTime());


    //body = date added, needs to be changed
    return mDb.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_TITLE,
            KEY_BODY, KEY_EXTRA, KEY_DUE }, KEY_DUE + " BETWEEN 'formattedDate1' and 'formattedDate2'", null, null, null, null);
}

这是为“截止日期”输入日期的代码:

                //convert string to int.
            int myNum = Integer.parseInt(editbox3.getText().toString());

            //get todays date
            Calendar cal=Calendar.getInstance();
            int currentDay=cal.get(Calendar.DAY_OF_MONTH);

            //Add days on to todays date
            cal.set(Calendar.DAY_OF_MONTH, currentDay+myNum);
            cal.getTime(); //Result

            //formate back to string
            String formattedDate = new SimpleDateFormat("dd-MM-yyyy HH:mm").format(cal.getTime());


            bundle.putString(NotesDbAdapter.KEY_DUE,formattedDate
                    .toString());

日期都是字符串。谁能帮忙?

最佳答案

您的查询有误。您使用 formattedDate1formattedDate2 但您的代码正在设置 formattedDateformattedDate1,更不用说这些非常重要的事实不会进入您的查询,因为您没有通过它。它应该是这样的:

String where = KEY_DUE + " BETWEEN ? AND ?";
String[] args = { String.valueOf(formattedDate1), String.valueOf(formattedDate2) };
return mDb.query(DATABASE_TABLE, where, args, null, null, null, null);

关于java - SQlite WHERE 语句不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15889076/

相关文章:

java - 为什么 Java 不在这里打印 last word?

java - java 配对字符串值的最佳方式

java - 按列读取文本文件并在java中创建二维数组

java - 什么是处理程序类?

mysql - 插入时出现 SQL 错误

java - Android - MediaPlayer,如何在流式传输时捕获损坏的网址

android - 如何让安卓应用程序始终在后台运行?

android - 解析 stackoverflow.com 的 rss 提要时出错

mysql - 选择列会打乱行的顺序

php - 外键mysql