使用列表选择行<&燃气轮机;关于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) {
}