使用列表选择行<&燃气轮机;关于sqlite android

使用列表选择行<&燃气轮机;关于sqlite android,android,sqlite,Android,Sqlite,您好,我需要使用列表值获取行列表的帮助。我想知道是否可以使用字符串列表进行搜索查询。如果是,应如何实施 比如说。我的列表中有这些值 2015年1月10日 2015年9月16日 2015年9月20日 2015年10月20日 现在我要做的是获取列表中包含这些值的所有行 示例表 Info table --------------------------------------------- id name address dates ----------

您好,我需要使用列表值获取行列表的帮助。我想知道是否可以使用字符串列表进行搜索查询。如果是,应如何实施

比如说。我的
列表中有这些值

2015年1月10日
2015年9月16日
2015年9月20日
2015年10月20日

现在我要做的是获取列表中包含这些值的所有行

示例表

    Info table
   ---------------------------------------------
    id  name   address        dates
   ---------------------------------------------
    1   Test             Sept 16, 2015
    4   Test             Sept 20, 2015
    10  Test             Jan 2, 2015
它应该得到的行

1 Test
4 Test
这是我用来插入这些日期的方法

public void insertDates(List<LocalDate> dates, String name) {
        int size = dates.size();

        sqLiteDatabase = this.getWritableDatabase();
        try {
            for(int i = 0; i < size; i++) {
                ContentValues contentValues = new ContentValues();
                contentValues.put(KEY_DATE, String.valueOf(duration.get(i).toString("MMMM d, yyyy")));
                contentValues.put(KEY_IS_FILTERED, 0);
                contentValues.put(KEY_NAME, name);
                sqLiteDatabase.insert(TABLE_INFO, null, contentValues);
            }
            sqLiteDatabase.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sqLiteDatabase.close();
        }
public void insertDates(列表日期、字符串名称){
int size=dates.size();
sqLiteDatabase=this.getWritableDatabase();
试一试{
对于(int i=0;i
我有这个问题,但它似乎不起作用

  public List<Info> getInfo(String info) {
        List<Info> getInfoList= new ArrayList<>();
        sqLiteDatabase = this.getReadableDatabase();
        Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM "+ TABLE_INFO + " WHERE " + KEY_DATES+ " LIKE '%" + info+ "%'", null);
        cursor.moveToFirst();

        while (!cursor.isAfterLast()) {
            Info info = new Info();
            info.setName(cursor.getString(1));
            getInfoList.add(info);
            cursor.moveToNext();
        }
        cursor.close();
        return getInfoList;
    }
public List getInfo(字符串信息){
List getInfoList=newarraylist();
sqLiteDatabase=this.getReadableDatabase();
Cursor Cursor=sqLiteDatabase.rawQuery(“从“+TABLE_INFO+”中选择*,其中“+KEY_DATES+”类似“%”“+INFO+“%””,null);
cursor.moveToFirst();
而(!cursor.isAfterLast()){
信息=新信息();
info.setName(cursor.getString(1));
getInfoList.add(info);
cursor.moveToNext();
}
cursor.close();
返回getInfoList;
}
这里有一个建议:

您可以将日期值以毫秒为单位(使用date.getTime()方法)存储在表的整数列(比如dateMS)中。然后,您可以在查询中使用以下WHERE子句:

WHERE dateMS in (date1MS, date2MS, date3MS...)

其中,
dateiMS
是您要搜索的第i个日期的毫秒值。

创建SQLOperation java类并放入代码:

public class SQLOperations {

private final SQLiteDatabase db;

public SQLOperations(Context context) {
    DatabaseOpenHelper helper = new DatabaseOpenHelper(context);
    db = helper.getWritableDatabase();
}

public List<String> searchMethod(List<String> datesInput) {
    List<String> stringList = new ArrayList<>();
    int length = datesInput.size();
    Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null);
    int j = 0;
    for (int i = 0; i < length; i++) {
        while (cursor.moveToNext()){
            String dateTemp = cursor.getString(cursor.getColumnIndex("dates"));
            if (dateTemp.equals(datesInput.get(i))) {
                String name = cursor.getString(cursor.getColumnIndex("name"));
                stringList.add(j, name);
                j++;
            }
        }
    }
    return stringList;
}
}
}


好运

日期应存储为SQLite中的
yyyy-mm-dd
。另外,
字符串信息的值是多少?你怎么称呼这个方法?这不适用于
Info-Info
变量您如何传递信息值?
public class DatabaseOpenHelper extends SQLiteOpenHelper {

Context context;

public DatabaseOpenHelper(Context context) {
    super(context, SQLConstants.DATABASE_NAME, null, SQLConstants.DATABASE_VERSION);
    this.context = context;
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(SQLConstants.CREATE_TABLE_NAME);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}