【问题标题】:querying sqlite database using "between" with cursor使用带有游标的“between”查询sqlite数据库
【发布时间】:2019-05-21 13:21:05
【问题描述】:

新手在这里.. 我有两个数据集,分别是“时间进入”和“超时”,我想使用“介于”来查询这两个数据集,以便我应该得到的数据被过滤我的“超时”到我的“超时”......

这是我的查询数据(获取所有数据)。

public Cursor retrieveHistoryLocationFromLocalDatabase(SQLiteDatabase db)
{
    String[] columnNames =
            {
                    HISTORY_SERIAL_NUMBER,
                    HISTORY_LATITUDE,
                    HISTORY_LONGITUDE,
                    HISTORY_DATE_TIME,
                    HISTORY_SPEED,
                    HISTORY_PORT
            };



            return (db.query(TABLE_HISTORY_FLEET_LOCATION, columnNames,null, 
            null,null, null, null));
           }

【问题讨论】:

    标签: android-studio cursor android-sqlite


    【解决方案1】:

    使用rawQuery()方法准备select语句。

    public Cursor retrieveHistoryLocationFromLocalDatabase(SQLiteDatabase db, String timeIn, String {
    
        String sql = "SELECT HISTORY_SERIAL_NUMBER, HISTORY_LATITUDE,"
                        + " HISTORY_LONGITUDE, HISTORY_DATE_TIME, HISTORY_SPEED, HISTORY_PORT"
                        + " FROM your_table_name"
                        + " WHERE your_time_in_out_column BETWEEN '" + timeIn + "' AND '" + timeOut + "'";
    
        return (db.rawQuery(sql, null));
    }
    

    您必须将your_table_name 更改为您的实际表名,将your_time_in_out_column 更改为实际列名,将timeIn 和timeOut 变量类型更改为您的实际值。

    在调用retrieveHistoryLocationFromLocalDatabase() 方法时,您需要传递3 个参数SQLite 数据库对象,time-in 和time-out。

    PS:不推荐使用rawQuery() 方法,因为它将原始 SQL 语句作为参数。这构成了 SQL 注入威胁。

    【讨论】:

    • 将可能的数据从我的主要活动传递给我的数据库助手怎么样?因为我的“someVlaues”是在我的活动中设置的,我不能通过 java 对象使用意图/使用共享首选项..
    • 顺便说一句,你太棒了@Shashanth,你总是在我的问题案例中帮助我......谢谢你和欢呼:)
    • 更新了我的答案,检查一下。向 retrieveHistoryLocationFromLocalDatabase() 方法添加额外的 2 个参数,并将值从活动传递给这些参数。
    猜你喜欢
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 2011-09-13
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多