0

我想在我的应用程序中显示来自 sqlite 数据库的图像。我的要求是显示一个文本视图及其相关图像。我将数据库文件保存在资产文件夹中。但实际上我的图像存储在服务器的“allimages”文件夹中。

我的数据库列(我保留的资产文件夹中的 db)如下:

S.No 描述

1 div style="text-align: justify;">甘地是一位伟大的领袖 img height="194" width="281" src="/allimages/img.png" alt="" div

2 div style="text-align: justify;">Subash 是一个伟大的领导者 img height="194" width="281" src="/allimages/img.png" alt="" />
- ---- --------- - ------------ - ------------ -- ------------ - -----------------

现在我的问题是在我的数据库中,图像路径存储在描述列中。在android中,我们不能在drawable文件夹中创建一个新文件夹并引用图像的路径。我的数据库包含 2000 到 3000 条记录。现在我无法更改本地数据库中图像的路径。那么我应该在我的项目文件夹中的哪里创建“allimages”文件夹以及如何引用这些图像?任何人都请帮我解决这个问题......我正在努力解决这个问题......

提前致谢.....

4

1 回答 1

0

根据您上面的评论:

您可以通过循环更新数据库中的所有元素

看起来您的描述是独一无二的,所以不幸的是,您需要从数据库中提取数据,将其放入某种列表中,修改列表以更改路径,然后使用修改后的值更新数据库。

注意:您只需要这样做一次,但如果您有数千条记录要更新,则需要一些时间。

以下是更新所有路径所需执行的步骤的一些伪代码。

获取所有记录,提取数据并修改路径

//Get all the records
Cursor allRecords = database.query(Table_Name, null, null, null, null, null, null);

//Extract the data from the Cursor and create a list
List<SomeDataObject> listOfModifiedDataObjects = new ArrayList<SomeDataObject>();

allRecords.moveToFirst();

while(!allRecords.isAfterLast())
{
    int id = allRecords.getInt(allRecords.getColumnIndex("NameOfIDColumn"));
    String description = allRecords.getString(allRecords.getColumnIndex("NameOfDescriptionColumn"));

    //Modify the description to change the path of the src...
    description = description.replace("allimages", "some/other/path/allimages");

    //Create the data object and store it in the list
    SomeDataObject tempObj = new SomeDataObject();
    tempObj.ID = id;
    tempObj.Description = description;

    listOfModifiedDataObjects.add(tempObj);

}

使用修改后的数据更新数据库 注意:这应该在一些可以访问 SQLiteDatabase 对象的数据库帮助器类中完成

//Iterate through all the modified data objects
for(SomeDataObject curObj: listOfModifiedDataObjects)
{
    ContentValues values = new ContentValues();

    //Set the new description into the content values object
    values.put("NameOfDescriptionColumn", curObj.Description);

    //Update the table with the new value. The record that gets updated is based on the curObj.ID.
    //In this case, I'm guessing your id column is named "_id"
    database.update(TABLE_NAME, values, "_id = ?", new String[]{String.ValueOf(curObj.ID)});
}

我没有编译任何这段代码,也没有手边的 IDE,所以可能有一些小错别字。但希望这能让您大致了解如何更新每条记录。

于 2012-05-16T18:42:11.057 回答