【问题标题】:SQLite database not accepting more than 1000 rows?SQLite 数据库不接受超过 1000 行?
【发布时间】:2017-06-21 14:13:23
【问题描述】:

我正在编写一个安卓应用程序。我正在解析 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");}

【问题讨论】:

  • @RaghavSood:已添加..
  • android的readLine()方法如何处理txt文件中只包含回车或换行的一行?那行 = "" 还是 null?
  • @tim 我假设您在谈论文件结尾。它是 null 而不是 ""。
  • 我的意思是行尾。文本文件是否有可能包含被 readLine() 方法解析为 NULL 的“空白”行(除了行尾字符)?
  • @tim 不,该行没有问题,我从该行上方删除了 2 行并运行了应用程序,现在第 1000 个条目是问题行下方 2 行的那个,所以这条线没有问题..

标签: java android sqlite


【解决方案1】:

出了什么问题?

我猜这很奇怪。问题可能与两者有关(文件或数据库问题)。

你想过TRANSACTION吗?它可能会解决您的问题。我最近使用 db 并正常插入了 100 000 行(但肯定在事务中),因为如果没有事务,您的操作将花费很多时间。

因此,正如我的建议将您的代码包装到事务中,读取和写入将花费更少的时间,并且应该可以解决问题。

伪代码:

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

更新:

查看文件中的 1000. 行并告诉我。

【讨论】:

  • 感谢您的回答。我尝试了你的建议,但它仍然停留在 1000 个条目..
  • 和其他人一样。我不认为这是文件的问题,因为该行就像所有其他行一样,并且 1000 太圆了一个数字..,它一定是 sqlite 或数据库的东西..
  • @user2213396 嗯,有什么错误吗?尝试首先从文件中读取,将值保存到列表中,然后执行插入。
【解决方案2】:

步骤:

  • 转到 SQLiteStudio
  • 选择工具 > 打开配置对话框 > 数据浏览
  • 在数据浏览中,您将拥有Number of data rows per page,现在 根据需要选择尺寸。

我遇到了和你一样的问题,我把数字 1000 改成了 2000,效果很好。希望它对你有用。

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-31
    • 2013-07-15
    • 2010-10-22
    • 1970-01-01
    相关资源
    最近更新 更多