Партнеры

Поиск в локальной базе данных

В прошлый раз, мы искали в массиве, теперь мы собираемся делать это в базе данных. Я буду использовать приложения для просмотра изображений, как в предыдущем случаи. a. Создайте базу данных в Images.java и вставьте имя и путь изображений. b. Получите доступ к базе данных в ImageSearch.java и верните значения. Images.java public SQLiteDatabase db = null; public static String dbase = "imagedb"; static String dbTable = "my_table"; try { createDatabase(dbase, 1, MODE_WORLD_READABLE,null); db = openDatabase(dbase, null); } catch (FileNotFoundException e) { e.printStackTrace(); } db.execSQL("CREATE TABLE IF NOT EXISTS "+dbTable+ " (Name TEXT, Path TEXT);"); for(int i= 0 ; i< imagelist.length; i++) { // mFiles[i] = imagelist[i].getAbsolutePath(); db.execSQL("INSERT OR IGNORE INTO " + dbTable + " VALUES ('"+ imagelist[i].getName() + "', '" + imagelist[i].getAbsolutePath() +"');"); } Особо здесь объяснять нечего. Все это основное выражения SQLite ImageSearch.java public SQLiteDatabase db = null; protected void onCreate(Bundle icicle) { super.onCreate(icicle); try { db = this.openDatabase(Images.dbase, null); }catch(FileNotFoundException e) { e.printStackTrace(); } - Откройте базу данный в onCreate(). Удалите следующий код в doSearchQuery(). Это часть массива for(String file : Images.mFiles) { if(file.contains(queryString)) { result.add(file); } } И добавьте следующий код после queryString в doSearchQuery() метод. String[] values = {"Name", "Path"}; Cursor c = db.query(true, Images.dbTable, values, null, null, null, null, null); int name = c.getColumnIndex("Name"); int path = c.getColumnIndex("Path"); if (c != null) { if (c.first()) { do { String imagename = c.getString(name); String imagepath = c.getString(path); if(imagepath.contains(queryString)) { result.add(imagepath); } } while (c.next()); } } - Сделаем запрос в базу данных для всех имен и путей. Но мы не используем название. - Добавим соответствующие пути к результату ArrayList и передадим это в массив Uri, как и прежде. - Это единственные различия между поиском в массиве и базе данных