Sqlite打开帮助器插入其他更新?

时间:2013-03-14 11:36:59

标签: android android-sqlite

我想成功插入数据

这是我的代码:

 public void insertData(String strTableName,
            ArrayList<HashMap<String, String>> arrListproductdatabase) {
        db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();
        for (int i = 0; i < arrListproductdatabase.size(); i++) {
            // cv.put(columnName, arrListOfRecord.get(i).get("name"));
            cv.put(columnproductname,
                    arrListproductdatabase.get(i).get("product"));
            cv.put(columnproductprice,
                    arrListproductdatabase.get(i).get("price"));
            cv.put(columnproductquantity,
                    arrListproductdatabase.get(i).get("quantity"));
            cv.put(columnproductid,
                    arrListproductdatabase.get(i).get("productID"));
            cv.put(columnresturantID,
                    arrListproductdatabase.get(i).get("resturantID"));

            db.insert(strTableName, null, cv);

        }

我想要当我必须再次按下添加按钮时,那个时候它应该检查产品是否已经插入,并且在那种情况下它应该更新并且全部。

我不想创建任何重复的值。

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:0)

您可以检查数据库中的不同值。请点击链接了解更多详情

android check duplicate values before inserting data into database

答案 1 :(得分:0)

将“产品”字段设置为唯一键。因此,当重复值从标准insert到达时,它将只返回-1并且将吞下错误消息。

您可以使用insertWithOnConflict (String table, String nullColumnHack, ContentValues initialValues, int conflictAlgorithm)来控制行为,您还可以指定可以具有值的冲突算法:

CONFLICT_ABORT
CONFLICT_FAIL
CONFLICT_IGNORE
CONFLICT_REPLACE
CONFLICT_ROLLBACK

查看conflict resolution types的描述参考。

还有updateWithOnConflict

答案 2 :(得分:-1)

你可以这样做:

public boolean checkProduct(String product){

        // shold open database here
        Cursor mCursor = 
                db.query(true, DATABASE_TABLE, null, "product='" + product+"'", null, null, null, null, null);
        if(mCursor != null){
            mCursor.close();
            // shold close database here
            return true;
        }
        // shold close database first here also
        return false;
    }

希望这有助于你。