вт., 03/25/2008 - 21:15 — android
В прошлый раз, мы искали в массиве, теперь мы собираемся делать это в базе данных. Я буду использовать приложения для просмотра изображений, как в предыдущем случаи.
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, как и прежде.
- Это единственные различия между поиском в массиве и базе данных