-1

データをうまく挿入したい

これが私のコードです:

 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);

        }

追加ボタンをもう一度押す必要があるときに、製品が既に挿入されているかどうかを確認し、その状態で更新する必要があります。

重複する値を作成したくありません。

どんな助けでも大歓迎です!

4

3 に答える 3

0

「製品」フィールドを一意のキーとして設定します。したがって、 standard から重複した値が到着するinsertと、単純に -1 が返され、エラー メッセージは飲み込まれます。

insertWithOnConflict (String table, String nullColumnHack, ContentValues initialValues, int conflictAlgorithm)where を使用して、値の競合アルゴリズムも指定することで、動作を制御できます。

CONFLICT_ABORT
CONFLICT_FAIL
CONFLICT_IGNORE
CONFLICT_REPLACE
CONFLICT_ROLLBACK

競合解決タイプの説明については、リファレンスを参照してください。

また、updateWithOnConflict

于 2013-03-14T11:47:50.900 に答える
0

データベースで個別の値を確認できます。詳細については、リンクをたどってください

アンドロイドはデータベースにデータを挿入する前に重複値をチェックします

于 2013-03-14T11:45:17.053 に答える
-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;
    }

これがお役に立てば幸いです。

于 2013-03-14T11:50:47.450 に答える