Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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_Listview - Fatal编程技术网

Android Sqlite数据库崩溃

Android Sqlite数据库崩溃,android,sqlite,listview,Android,Sqlite,Listview,有没有办法防止sqlite数据库崩溃?我有一个包含项目的列表视图。单击按钮时,所有项目都保存在数据库中。但是,当列表中有很多产品时,您在保存按钮上单击verry fast,应用程序就会冻结。然后,当我检查我的数据库时,所有项目都被多次保存 有人知道答案吗 代码: 使用isProdAlreadyFavorite,我检查数据库是否已经获得id为。。。 当你点击按钮时,他执行这个功能 public void addFavProducten(ArrayList<Product> produc

有没有办法防止sqlite数据库崩溃?我有一个包含项目的列表视图。单击按钮时,所有项目都保存在数据库中。但是,当列表中有很多产品时,您在保存按钮上单击verry fast,应用程序就会冻结。然后,当我检查我的数据库时,所有项目都被多次保存

有人知道答案吗

代码: 使用isProdAlreadyFavorite,我检查数据库是否已经获得id为。。。 当你点击按钮时,他执行这个功能

public void addFavProducten(ArrayList<Product> producten) {
    db = this.getWritableDatabase();

    db.beginTransaction();
    try {
        for (Product product : producten) {
            if (!isProdAlreadyFavorite(product.getProductid())) {
                ContentValues cv = new ContentValues();
                cv.put(Constanten.FAV_PROD_COLUMN_PRODUCTID,
                        product.getProductid());
                db.insert(Constanten.TABLE_FAVPROD, null, cv);
            }
        }
        db.setTransactionSuccessful();
    } catch (Exception e) {
        db.endTransaction();
    } finally {
        db.endTransaction();
        db.close();
    }
}

为什么不在用户单击“保存”按钮后立即禁用该按钮,保存数据,然后启用该按钮呢。您还需要更改数据库“保存”代码,以防止多次保存。什么崩溃?听起来数据库工作得很好。别忘了使用事务和某种标志来记录是否有新项目或正在更新的项目。听起来像是重入问题或ui中的某个循环。没有sqlite问题的迹象,也没有崩溃冻结的迹象。现在我这样做了,视图不会冻结。但他仍然输入了副本。。