基於以上您的意見:
你可以通過一個循環
它看起來像你的描述是唯一的更新數據庫中的所有元素,所以很遺憾,你需要從數據庫中提取數據,把它變成某種形式的名單,修改列表來更改路徑,然後使用修改後的值更新數據庫。
注意:您只需要這麼做一次,但如果你有成千上萬的記錄更新,這需要時間。
下面是你需要進行更新所有的路徑中的某些步驟僞代碼。
抓取所有的記錄,提取數據並修改路徑
//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);
}
更新與修改後的數據的DATABSE 注:這應該能夠訪問一些數據庫助手類來完成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方便,所以可能有輕微的錯別字。但希望這給你一個關於如何更新每條記錄的總體思路。
我不太理解,因爲我不知道你將如何使用相對路徑獲得的圖像,如果他們是在服務器上?但是,爲什麼在從數據庫中檢索描述後不能修改路徑?修改* src =「/ allimages/img並不難。png「* with * src =」/ some/other/path/allimages/img.png *? – Gophermofur
嗨,實際上圖像在服務器上。但現在我會把它們保留在本地。要放在本地,我需要創建一個文件夾「allimages」,因爲我的本地數據庫描述列由該路徑組成src =「/ allimages/img.png」只有na ...所以我該怎麼辦?是否有可能在我的本地數據庫中更改圖像的路徑?如果是這樣,我怎麼能改變1000年的記錄圖像的路徑? – user1399231