问题底部的解决方案
我有一个 FTP 服务器,上面有 3'000 多张图片,我将图片名称保存到 ArrayList。在此之后,我想将它们从数组列表保存到数据库,这需要非常非常非常非常多的时间!看:
和
FTPFile[] files = ftpClient.listFiles();
for (FTPFile file : files) {
imageNames.add(file.getName());
}
我得到所有这些文件的列表并将它们保存到 ArrayList imageNames 中。这非常快,不会超过 1 - 最多 2 秒。
现在我喜欢把这个数组写回我的 sqlite 数据库。当我这样做时,需要很长时间才能完成!我等了超过2分钟...
int i = imageNames.size() - 1;
int q = 0;
while(i >= 0){
String insert_arraylist = "INSERT INTO ARRAYLIST (STRING) VALUES ('"+imageNames.get(q)+"')";
db.execSQL(insert_arraylist);
i--;
q++;
}
那么我怎样才能加快这个插入?
提前致谢!
解决方案:(从超过 2 分钟到不到 3 秒;))
FTPFile[] files = ftpClient.listFiles();
insert_arraylist = "";
ContentValues con = new ContentValues();
for (FTPFile file : files) {
imageUrls.add("http://192.168.99.104/GetThePicture/thumbs/"+file.getName());
}
int i = imageUrls.size() - 1;
int q = 0;
db.beginTransaction();
try{
while(i >= 0){
String insert_arraylist = "INSERT INTO ARRAYLIST (STRING) VALUES ('"+imageUrls.get(q)+"')";
db.execSQL(insert_arraylist);
i--;
q++;
}
db.setTransactionSuccessful();
} catch(Exception e){
} finally {
db.endTransaction();
}