3

私はアンドロイドアプリを書いています。txt ファイルから行を解析し、各行のデータを SQLite データベースに挿入しています。ただし、挿入プロセスはちょうど 1000 エントリで停止します。3000 を超えるエントリがありますが、挿入プロセスは 1000 で停止します。何が問題なのですか?

編集:コードは次のとおりです。

try{
            InputStream is = ctx.getAssets().open("feedtitlesandaddresses.txt");
            InputStreamReader iz=new InputStreamReader(is);
            BufferedReader br = new BufferedReader(iz);
            ContentValues values = new ContentValues();
            while((line=br.readLine())!=null) {
            StringTokenizer stringTokenizer = new StringTokenizer(line, "<");
            String firstNumber="";
            String strfinal="";
              **//code which gives values to strfinal and firstNumber excluded
              values.put(KEY_NAME, firstNumber); // Contact Name
              values.put(KEY_PH_NO,strfinal); // Contact Phone

              // Inserting Row

              db.insert(TABLE_CONTACTS, null, values);}




   }catch(Exception e){Log.d("yeah error is"+e,"twitch12");}
4

2 に答える 2

1

何がうまくいかないのですか?

不思議ですね。問題は両方に関連している可能性があります(ファイルまたはデータベースの問題)。

について考えましたTRANSACTIONか?それはあなたの問題を解決するかもしれません。私は最近、データベースで作業し、通常は100 000行を挿入しました(ただし、トランザクションでは確かに)。トランザクションがないと、操作に時間がかかるためです。

したがって、私の推奨事項として、コードをトランザクションにラップすると、読み取りと書き込みにかかる時間が大幅に短縮され、問題が解決するはずです。

擬似コード:

try {
   db.begiTransaction();
   ...
   // your work with file and inserting
   db.setTransactionSuccessful();
   ...
}
finally {
   if (db.inTransaction()) {
      db.endTransaction();
   }
}

アップデート:

ファイルの 1000. 行を見て、私に知らせてください。

于 2013-03-27T19:21:21.283 に答える
1

手順:

  • SQLiteStudio に移動
  • [ツール] > [構成] ダイアログを開く > [データの参照] を選択します。
  • データの参照ではNumber of data rows per page、必要に応じてサイズを選択します。

私はあなたと同じ問題を抱えており、1000 を 2000 に変更したところ、うまくいきました。それがあなたのために働くことを願っています。

于 2017-06-21T03:47:34.560 に答える