Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:使用SQLite插入批处理数据(一次)_Android_Sqlite - Fatal编程技术网

Android:使用SQLite插入批处理数据(一次)

Android:使用SQLite插入批处理数据(一次),android,sqlite,Android,Sqlite,下面是代码,目前我正在使用,但我正在寻找一种方法来加快我的插入,我有100+行插入非常第一次。。。有什么想法吗 public class SQLiteAdapter { private SQLiteHelper sqLiteHelper; private SQLiteDatabase sqLiteDatabase; private Context context; public SQLiteAdapter(Context c){ context = c; } public l

下面是代码,目前我正在使用,但我正在寻找一种方法来加快我的插入,我有100+行插入非常第一次。。。有什么想法吗

public class SQLiteAdapter {

private SQLiteHelper sqLiteHelper;
private SQLiteDatabase sqLiteDatabase;
private Context context;

public SQLiteAdapter(Context c){
    context = c;
}

   public long insert(String empId, String name......)
   {
      ContentValues contentValues = new ContentValues();
      contentValues.put(KEY_EMP_ID, empId);
      .....................
      .....................
      .....................
      return sqLiteDatabase.insert(KEY_TABLE, null, contentValues); 
   }


   public void InsertReciters()
   {
     //currently, this is how i am doing, how can i speed up inserting the rows in to db?
    //i have 100+ rows ..........

     this.insert("ac123", ................);
     this.insert("ac133", ................);
     this.insert("ac143", ................);
     this.insert("ac153", ................);
     this.insert("ac163", ................);
     .................
     ................. 
   }  
}

建议您按事务插入大量数据

请参阅以下代码格式:

List<String[]> hugeData=new ArrayList<String[]>();
try{
   sqLiteDatabase.beginTransaction();
    //insert huge data
    //get pre-compiled SQLiteStatement object
    SQLiteStatement statement=sqLiteDatabase.compileStatement("insert into tablename(..) value (?,?)")   
    for(String[] row:hugeData){
      statement.bindString(1,row[0]);
      //......
      statement.execute();
    }
   sqLiteDatabase.setTransactionSuccessful();
}finally{
  sqLiteDatabase..endTransaction();
}
List hugeData=new ArrayList();
试一试{
sqLiteDatabase.beginTransaction();
//插入大量数据
//获取预编译的SQLiteStatement对象
SQLiteStatement语句=sqLiteDatabase.compileStatement(“插入到表名(..)值(?,)”)
对于(字符串[]行:hugeData){
语句.bindString(1,行[0]);
//......
语句。execute();
}
sqLiteDatabase.setTransactionSuccessful();
}最后{
sqLiteDatabase..endTransaction();
}
---------------------编辑------------------

公共类SQLiteAdapter{
私有SQLiteHelper SQLiteHelper;
专用SQLiteDatabase SQLiteDatabase;
私人语境;
List insertData=null;
公共SQLiteAdapter(上下文c){
上下文=c;
}
公共SQLiteAdapter(上下文c,列表_insertData){
这(c);
insertData=_insertData;
}
公共长插入(字符串empId、字符串名称……)
{
ContentValues ContentValues=新ContentValues();
contentValues.put(KEY\u EMP\u ID,empId);
.....................
.....................
.....................
返回sqLiteDatabase.insert(KEY_TABLE,null,contentValues);
}
公共void insertreaders()
{
//目前,我就是这样做的,如何加快将行插入数据库的速度?
//我有100多行。。。。。。。。。。
本条插入(“ac123”和“……”;
本条插入(“ac133”和“……”;
本条插入(“ac143”和“……”;
本条插入(“ac153”和“……”;
本条插入(“ac163”和“……”;
.................
................. 
}  
public void InsertBatchData()
{
试一试{
sqLiteDatabase.beginTransaction();
//插入大量数据
//获取预编译的SQLiteStatement对象
SQLiteStatement语句=sqLiteDatabase.compileStatement(“插入到表名(..)值(?,)”)
对于(字符串[]行:hugeData){
语句.bindString(1,行[0]);
//......
语句。execute();
}
sqLiteDatabase.setTransactionSuccessful();
}最后{
sqLiteDatabase..endTransaction();
}
}
}

我不懂
…编译声明("insert…
我有100多行…返回预编译的SQLiteStatement对象。然后可以使用此对象多次有效地执行此语句。好吧,我对
值感到困惑
您希望我定义什么?为行输入值,然后在for循环语句中输入值?您可以使用我的代码来演示吗ate…可能是我对你使用insert语句的方式有点困惑。首先,如果你想插入大数据,你必须拥有将插入数据库的大数据对象。可能是你可以使用列表类型对象来存储大数据。你可以循环列表对象来插入数据。你可以使用预填充的数据库:准备好的语句和事务:
public class SQLiteAdapter {

private SQLiteHelper sqLiteHelper;
private SQLiteDatabase sqLiteDatabase;
private Context context;
List<String[]> insertData=null;

public SQLiteAdapter(Context c){
    context = c;
}
 public SQLiteAdapter(Context c,List<String[]> _insertData){
    this(c);
    insertData=_insertData;
}
   public long insert(String empId, String name......)
   {
      ContentValues contentValues = new ContentValues();
      contentValues.put(KEY_EMP_ID, empId);
      .....................
      .....................
      .....................
      return sqLiteDatabase.insert(KEY_TABLE, null, contentValues); 
   }


   public void InsertReciters()
   {
     //currently, this is how i am doing, how can i speed up inserting the rows in to db?
    //i have 100+ rows ..........

     this.insert("ac123", ................);
     this.insert("ac133", ................);
     this.insert("ac143", ................);
     this.insert("ac153", ................);
     this.insert("ac163", ................);
     .................
     ................. 
   }  

  public void InsertBatchData()
   {
    try{
   sqLiteDatabase.beginTransaction();
    //insert huge data
    //get pre-compiled SQLiteStatement object
    SQLiteStatement statement=sqLiteDatabase.compileStatement("insert into tablename(..) value (?,?)")   
    for(String[] row:hugeData){
      statement.bindString(1,row[0]);
      //......
      statement.execute();
    }
   sqLiteDatabase.setTransactionSuccessful();
   }finally{
    sqLiteDatabase..endTransaction();
   }
   }
}