如何在android中加载预先填充的Sqlite数据库

时间:2016-07-25 04:20:11

标签: android database android-sqlite

我正在尝试在Android中使用预先填充的Sqlite数据库并且它可以正常工作100到1000个数据,但是当我加载100000数据行时它被卡住了我的意思是它花了很多时间加载我找到其他字典具有相同数量的数据的应用程序不会挂起,所以任何人都可以帮助我...

我使用下面的代码复制数据,我从main调用它,代码也在main。

 private boolean copyDatabase(Context context) {
    try {

        InputStream inputStream = context.getAssets().open(DatabaseHelper.DBNAME);
        String outFileName = DatabaseHelper.DBLOCATION + DatabaseHelper.DBNAME;
        OutputStream outputStream = new FileOutputStream(outFileName);
        byte[]buff = new byte[4096];
        int length = 0;
        while ((length = inputStream.read(buff)) > 0) {
            outputStream.write(buff, 0, length);
        }
        outputStream.flush();
        outputStream.close();
        Log.w("MainActivity","DB copied");
        return true;
    }catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}

我使用以下代码调用复制功能

public class MainActivity extends Activity {
private DatabaseHelper mDBHelper;
public Adapter dap;
ArrayList<String> myObject1;
int check=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    mDBHelper = new DatabaseHelper(this);

  File database = getApplicationContext().getDatabasePath(DatabaseHelper.DBNAME);
   // if(false == database.exists())
        if(check==0){
        mDBHelper.getReadableDatabase();
        //Copy db
        if(copyDatabase(this)) {
            Toast.makeText(this, "Copy database succes", Toast.LENGTH_SHORT).show();
            check=1;
        } else {
            Toast.makeText(this, "Copy data error", Toast.LENGTH_SHORT).show();
            return;
        }
    }

任何人都可以帮我解释如何正确地做到这一点....

0 个答案:

没有答案