Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android,SQLite:在while子句中插入数据非常慢大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在问题的底部解决问题

我有一个FTP服务器,上面有超过3,000张图片,我将图片名称保存到ArrayList.在此之后,我想将它们从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();
        }

解决方法

我建议按照以下帖子中的说明进行批量插入:

Android SQLite database: slow insertion

它为您提供了多个示例.就个人而言,我注意到sqlite插入@R_489_11375@,而对于3000插入,其正常需要很长时间,除非你进行批量插入.

因此,想法与发布的其他海报相同,即在一次交易中完成所有操作:

db.begintransaction();
  for (entry : listOfEntries) {
  db.insert(entry);
}
db.settransactionsuccessful();
db.endtransaction();

大佬总结

以上是大佬教程为你收集整理的Android,SQLite:在while子句中插入数据非常慢全部内容,希望文章能够帮你解决Android,SQLite:在while子句中插入数据非常慢所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。