3

質問の最後にある解決策

3,000 枚を超える画像を含む FTP サーバーがあり、画像名を 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();
        }
4

2 に答える 2