【问题标题】:how to extract data from sqlite based date constraint如何从基于 sqlite 的日期约束中提取数据
【发布时间】:2013-11-19 05:04:07
【问题描述】:

我正在做一个应用程序,其中包含一个使用 sq lite 的名为“Purchase”的表。具有三个字段 id、购买金额、日期的表。当我浏览谷歌时,我知道日期字段以整数或文本形式存储在 sq lite 中。所以我使用 var char 来存储文本。 现在我的问题是我想根据日期约束显示表中的详细信息 (例如:27-7-2012 到 10-8-2013 之间的数据)我如何提取数据,因为日期字段被声明为 var char.. 任何身体都可以帮助...

【问题讨论】:

  • 您可以直接在 DBAdapter 类中使用查询。你想要这样的例子吗?我会把它作为答案发布。仅供参考,我已将日期声明为文本(例如 27/12/2013)
  • 如果我使用直接查询也如何比较日期的月份,因为它是字符串如果我想显示最近 2 个月的数据我该如何编写查询你能举出任何小例子吗
  • 是的。我会尽快发布
  • 如果您想要在自定义 ListView 中显示记录的适配器和总样本,我也可以发布它。你想要我,还是你有它?
  • 您的数据是如何存储的?是TEXT,对,但是是哪种格式? d/m/y?

标签: android sqlite


【解决方案1】:

这是我在 DBAdapter 类中使用的一种方法:

public Cursor getAllDetailsField(String date) {

        return db.rawQuery("select * from " + TABLE_NAME_FIELDW + " where "
                + KEY_DATE + " = '" + date + "'", null);
    }

这里 Date 作为参数传递,这意味着当我在 Activity 中使用此方法时,我必须为该方法分配一个 Date,以便它执行查询。上面的查询只是获取我在活动中传递的日期的记录。

活动中:

private void loadFieldDatabase() {

         String date = app.getDARDate(); 
            // DATE is FETCHED FROM APPLICATION CLASS OBJECT, YOU CAN SET IT
            // IN PREVIOUS OR CURRENT ACTIVITY , HOWEVER YOU MAY FETCH ANY WAY  
            // YOU WANT TO. JUST MAKE SURE WHATEVER YOU PASS, HOLDS THE DATE VALUE

                 String date = app.getDate();
        Cursor c = db.getAllDetailsField(date);
        if (c != null && c.getCount() > 0) {
            c.moveToFirst();
            for (int count = 0; count < c.getCount(); count++) {

                DBbeanclass detail = new DBbeanclass();

                detail.setDate(c.getString(c
                        .getColumnIndex(DARDBAdapter.KEY_DATE)));
                detail.setName(c.getString(c
                        .getColumnIndex(DARDBAdapter.KEY_NAME)));

                arrCustomerField.add(detail);
                c.moveToNext();
            }
            c.close();
        }
    }

您会看到我没有为您编写查询。但我认为你可以自己做

【讨论】:

  • 我还有 1 个疑问,我是 android 新手,所以如果这是一个愚蠢的问题,请向我道歉。我的问题是:此查询是否返回特定日期的数据...例如,如果我的日期为 25-7-2013,则查询将返回该日期的所有购买详细信息..?但我想从那天到现在
  • 是的,它返回特定日期的数据。但是正如我在下面的答案中所写的那样,您应该尝试自己进行查询。在失败 3 天后,我解决了您遇到的相同问题。我什至没有得到 SO 的帮助。自己试试。我自己也试试。我也是一个初学者,为了记录。
  • Link 1 : stackoverflow.com/questions/10680793/… LINK 2: stackoverflow.com/questions/14681815/… 如果您在引用这些链接后仍然遇到问题,请告诉我。
【解决方案2】:

考虑使用 SQLite appropriate 日期格式。

使用YYYY-MM-DD 格式的日期将大大简化您的代码,允许更快地进入数据库(无需获取每一行来评估代码),并且还可以利用索引来利用性能。

转换现有数据也很容易。

【讨论】:

    猜你喜欢
    • 2021-04-04
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多