【问题标题】:To insert large amount of data in android SQLite Database在 android SQLite 数据库中插入大量数据
【发布时间】:2013-08-31 08:04:28
【问题描述】:

我是 Android 开发新手。

目前,在 Android 中使用 SQLite 数据库。

我的问题是我有大量数据必须存储在 Android 的 SQLite 数据库中。

有 2 个表:一个有 14927 行,另一个有 9903 行。

目前是sql中的数据库。我已经将这些数据复制到 excel 表中,但不明白如何将这些数据导入 SQLite 数据库。

我通过以下链接:

Inserting large amount of data into android sqlite database?

这里发布了关于 CSV 文件的解决方案。但想知道其他方法。

请告诉我在 Android 中导入如此大数据的最佳方法是什么。

请帮助我。提前致谢。

【问题讨论】:

  • 你试过将excel文件保存为csv吗?

标签: android android-sqlite


【解决方案1】:

这样做

SQLiteDatabase sd;
    sd.beginTransaction();


        for (int i = 0; i < data.size(); i++) {
            ContentValues values = new ContentValues();
            values.put(DBAdapter.Column1,  "HP");
            values.put(DBAdapter.Column2,  "qw");
            values.put(DBAdapter.Column3,  "5280");
            values.put(DBAdapter.Column4,  "345, 546");
            sd.insert(DBAdapter.TABLE, null, values);
            sd.insertWithOnConflict(tableName, null, values, SQLiteDatabase.CONFLICT_IGNORE);

        }

    sd.setTransactionSuccessful();
    sd.endTransaction();

【讨论】:

    【解决方案2】:

    试试这个

     SQLiteDatabase db = Your_DATABASE;
     db.beginTransaction();
     db.openDatabase(); 
    
    for (int i = 0; i < array.size(); i++) 
    {
        String sql = ( "INSERT INTO " + Table_NAME 
                                      + "(" + COLUMN_1 + "," 
                                            + COLUMN_2 + ","  
                                            + COLUMN_3 + "," 
                                            + COLUMN_4 + "," 
                                      + ") values (?,?,?,?)");
    
        SQLiteStatement insert = db.compileStatement(sql);
    }
    
    db.setTransactionSuccessful();
    db.endTransaction();
    db.closeDatabase();
    

    【讨论】:

      【解决方案3】:

      使用DatabaseUtils.InsertHelper。在这个article 中,您将找到一个示例,说明如何使用它以及其他加快插入速度的方法。示例如下:

      import android.database.DatabaseUtils.InsertHelper;
      //...
      private class DatabaseHelper extends SQLiteOpenHelper {
          @Override
          public void onCreate(SQLiteDatabase db) {
              // Create a single InsertHelper to handle this set of insertions.
              InsertHelper ih = new InsertHelper(db, "TableName");
      
              // Get the numeric indexes for each of the columns that we're updating
              final int greekColumn = ih.getColumnIndex("Greek");
              final int ionicColumn = ih.getColumnIndex("Ionic");
              //...
              final int romanColumn = ih.getColumnIndex("Roman");
      
              try {
                  while (moreRowsToInsert) {
                      // ... Create the data for this row (not shown) ...
      
                      // Get the InsertHelper ready to insert a single row
                      ih.prepareForInsert();
      
                      // Add the data for each column
                      ih.bind(greekColumn, greekData);
                      ih.bind(ionicColumn, ionicData);
                      //...
                      ih.bind(romanColumn, romanData);
      
                      // Insert the row into the database.
                      ih.execute();
                  }
              }
              finally {
                  ih.close(); 
              }
          }
      //...
      }
      

      【讨论】:

        猜你喜欢
        • 2011-09-21
        • 1970-01-01
        • 2014-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-15
        • 2013-06-03
        相关资源
        最近更新 更多