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

Android Sqlite数据库-约束失败

Android Sqlite数据库-约束失败,android,json,sqlite,Android,Json,Sqlite,我在sqlite数据库中插入数据时遇到问题。我在互联网上获取JSON数据,然后试图将该数据放入sqlite数据库,但这给我带来了一个约束失败错误。我知道这意味着我已经插入了相同的数据,或者至少使用了相同的id,但是当我从emulator查看我的数据库时,该表是空的,并且没有数据。下面是我正在使用的代码: public boolean executeInsert() { UserDatabaseHelper userDbHelper = new UserDatabaseHelper(con

我在sqlite数据库中插入数据时遇到问题。我在互联网上获取JSON数据,然后试图将该数据放入sqlite数据库,但这给我带来了一个约束失败错误。我知道这意味着我已经插入了相同的数据,或者至少使用了相同的id,但是当我从emulator查看我的数据库时,该表是空的,并且没有数据。下面是我正在使用的代码:

public boolean executeInsert() {
    UserDatabaseHelper userDbHelper = new UserDatabaseHelper(context, null, 1);
    userDbHelper.initialize(context);
    ContentValues values = new ContentValues();
    values.put("objectId", objectId);
    Log.i("objectd Id ", "object ID : " + objectId);
    values.put("objectOid", objectOid);
    Log.i("objectd Oid ", "object OID : " + objectOid);

    try {
        String jsonData = new String(collectionBuffer, "UTF-8");
        Log.w("JSONDATA", "JSONDATA VALID OR NOT : " + jsonData);
        json = new JSONObject(jsonData);
        JSONObject jsonObj = (JSONObject) new JSONTokener(jsonData).nextValue();
        locale = jsonObj.getString("locale"); // don't put in database
        Log.i("Locale", "Locale : " + locale);
        id = Integer.parseInt(jsonObj.getString("id"));
        Log.i("Id", "Id : " + id);
        genreId = Integer.parseInt(jsonObj.getString("genre_id"));
        Log.i("Genre ID ", "Genre Id : " + genreId);
        values.put("genreId", genreId); //genreId
        dateCreated = jsonObj.getString("date_created");
        Log.i("date Created", "Date Created : " + dateCreated);
        values.put("dateCreated", dateCreated);
        title = jsonObj.getString("title");
        Log.i("title", "title : " + title);
        values.put("title", title);
        isRecommended = Integer.parseInt(jsonObj.getString("is_recommended"));
        Log.i("Is Recommended", "IS Recommended : " + isRecommended);
        values.put("isRecommended", isRecommended);
        userCount = Integer.parseInt(jsonObj.getString("subscribed_users_count"));
        Log.i("USubscribed Users Count", "Subscribed Users Count : " + userCount);
        values.put("usersCount", userCount);
        envelopeCost = Double.parseDouble(jsonObj.getString("envelope_cost"));
        Log.i("envelope cost", "envelope cost" + envelopeCost);
        values.put("envelopeCost", envelopeCost);
        alias = jsonObj.getString("alias");
        Log.i("alias", "alias : " + alias);
        values.put("alias", alias);
        imageWidth = Integer.parseInt(jsonObj.getString("category_big_image_width"));
        Log.i("category_big_image_width", "category_big_image_width : " + imageWidth);
        totalCardsCount = Integer.parseInt(jsonObj.getString("total_cards_count"));
        Log.i("Total Cards Count", "Total Cards Count : " + totalCardsCount);
        values.put("cardsCount", totalCardsCount);
        ownedCardsCount = Integer.parseInt(jsonObj.getString("owned_cards_count"));
        Log.i("Owner Cards Count", "Owned Cards Count : " + ownedCardsCount);
        values.put("ownedCardsCount", ownedCardsCount);
        elemOrder = Integer.parseInt(jsonObj.getString("elem_order"));
        Log.i("elem order", "elem order : " + elemOrder);
        values.put("elemOrder", elemOrder);
        intro = jsonObj.getString("intro_text");
        Log.i("Intro text", "Intro text : " + intro);
        values.put("introText", intro);
        createdBy = jsonObj.getString("created_by");
        Log.i("created By", "Created By : " + createdBy);
        values.put("createdBy", createdBy);
        right = jsonObj.getString("reserved_rights_to");
        Log.i("reserved_rights_to", "reserved_rights_to : " + right);
        values.put("reservedRightsTo", right);
        legals = jsonObj.getString("legal_notice");
        Log.i("legals", "legals : " + legals);
        values.put("legalNotice", legals);
        isSubscribed = Integer.parseInt(jsonObj.getString("is_subscribed"));
        Log.i("is subscribed", "Is subcribed : " + isSubscribed);
        values.put("isSubscribed", isSubscribed);
        cardsPerEnvelop = Integer.parseInt(jsonObj.getString("cards_per_envelope"));
        Log.i("Cards per envelope", "Carda per envelope : " + cardsPerEnvelop);
        values.put("cardsPerEnvelope", cardsPerEnvelop);
        JSONArray langs = jsonObj.getJSONArray("languages");
        for (int i = 0; i < langs.length(); i++) {
            Log.i("Languages", "Languages : " + langs.getJSONObject(i).getString("locale"));
            Log.i("Languages", "Languages : " + langs.getJSONObject(i).getString("title"));
        }
        tagTitle = jsonObj.getString("tag_title");
        Log.i("tag title", "tag title : " + tagTitle);
        values.put("tagTitle", tagTitle);
        categoryTitle = jsonObj.getString("category_title");
        Log.i("category title", "category title : " + categoryTitle);
        values.put("categoryTitle", categoryTitle);
        dateTitle = jsonObj.getString("date_title");
        Log.i("date title", "date title : " + dateTitle);
        values.put("dateTitle", dateTitle);
        JSONArray stats = jsonObj.getJSONArray("statistics_cats");
        for (int i = 0; i < stats.length(); i++) {
            //String row = stats.get(i).toString();
            Log.w("Element", "Show Statistics cats : " + stats.getJSONObject(i).getString("type"));
            Log.w("Element", "Show Statistics cats : " + stats.getJSONObject(i).getString("value"));
            Log.w("Element", "Show Statistics cats : " + stats.getJSONObject(i).getString("name"));
        }
        isEnabled = Integer.parseInt(jsonObj.getString("is_enabled"));
        Log.i("is enabled", "is enabled : " + isEnabled);
        values.put("isEnabled", isEnabled);
        hasOwnerContent = Integer.parseInt(jsonObj.getString("has_owned_content"));
        Log.i("has owned content", "has owned content : " + hasOwnerContent);
        values.put("hasOwnedContent", hasOwnerContent);
        isCommingSoon = Integer.parseInt(jsonObj.getString("is_coming_soon"));
        Log.i("is comming soon", "is comming soon : " + isCommingSoon);
        isPublic = Integer.parseInt(jsonObj.getString("is_public"));
        Log.i("is public", "is public : " + isPublic);
        //values.put("isPublic", isPublic);
        visibleCountries = jsonObj.getString("visible_countries");
        Log.i("visible countries", "visible countries : " + visibleCountries);
        visibleLanguages = jsonObj.getString("visible_languages");
        Log.i("visible languages", "visible languages : " + visibleLanguages);
        columnTitle1 = jsonObj.optString("column_title_1");
        Log.i("column title 1", "columtn title 1 : " + columnTitle1);
        values.put("columnTitle1", columnTitle1);
        columnTitle2 = jsonObj.optString("column_title_2");
        Log.i("column title 2", "columtn title 2 : " + columnTitle2);
        values.put("columnTitle2", columnTitle2);
        columnTitle3 = jsonObj.optString("column_title_3");
        Log.i("column title 3", "columtn title 3 : " + columnTitle3);
        values.put("columnTitle3", columnTitle3);
        columnTitle4 = jsonObj.optString("column_title_4");
        Log.i("column title 4", "columtn title 4 : " + columnTitle4);
        values.put("columnTitle4", columnTitle4);
        columnTitle5 = jsonObj.optString("column_title_5");
        Log.i("column title 5", "columtn title 5 : " + columnTitle5);
        values.put("columnTitle5", columnTitle5);
        String sql = "SELECT * FROM collections WHERE objectId = " + objectId;
        Cursor mCursor = userDbHelper.executeSQLQuery(sql);
        if (mCursor.getCount() == 0) {
            userDbHelper.executeQuery("collections", values);
            mCursor.close();
        } else {
            for (mCursor.moveToFirst(); mCursor.moveToNext(); mCursor.isAfterLast()) {
                int mObjectId = mCursor.getInt(mCursor.getColumnIndex("objectId"));
                if (objectId != mObjectId) {
                    userDbHelper.executeQuery("collections", values);
                }
            }
        }
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
        Log.w("Error", "ERROR : " + e);
    } catch (JSONException e) {
        e.printStackTrace();
        Log.w("Error", "ERROR : " + e);
    } finally {
        userDbHelper.close();
    }
    return true;
}
UserDbHelper类是我的数据库助手类。我正在使用它将数据放入sqlite。我对其他桌子没有任何问题。我可以用类似的代码将数据放在它们上面,但集合表不想工作

那么,有什么建议/帮助或其他可以帮助我解决问题的东西吗?
谢谢

正如我们所知,Sqlite是数据库的轻量级版本,可在多个移动平台上使用。因为它不是一个成熟的RDBMS,所以它支持一些数据类型,而不是所有数据类型


请检查是否正确插入了数据。

有几件事可能引发此异常。我认为您首先需要检查是否插入了所有非空行,以便确保插入了所有绑定行。

实际上这就是问题所在……感谢您的帮助/建议
10-03 09:07:48.899: ERROR/Database(30136): Error inserting cardsPerEnvelope=1 hasOwnedContent=1 legalNotice=legals elemOrder=4 dateTitle=Datee tagTitle=Taggv title=Nimasystems 11er objectId=6 introText=txt cardsCount=2 isRecommended=1 usersCount=3 isSubscribed=1 columnTitle1= categoryTitle=Catt alias=nima1r envelopeCost=3.0 ownedCardsCount=1 isEnabled=1 objectOid=00529a1c5597334a96e337feda879831 createdBy=created ny reservedRightsTo=nonono dateCreated=2011-09-27 columnTitle3= columnTitle2= columnTitle5= columnTitle4= genreId=3
10-03 09:07:48.899: ERROR/Database(30136): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
10-03 09:07:48.899: ERROR/Database(30136):     at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
10-03 09:07:48.899: ERROR/Database(30136):     at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:55)
10-03 09:07:48.899: ERROR/Database(30136):     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1623)
10-03 09:07:48.899: ERROR/Database(30136):     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1484)
10-03 09:07:48.899: ERROR/Database(30136):     at com.stampii.stampii.comm.rpc.UserDatabaseHelper.execQuery(UserDatabaseHelper.java:252)
10-03 09:07:48.899: ERROR/Database(30136):     at com.stampii.stampii.comm.rpc.UserDatabaseHelper.executeQuery(UserDatabaseHelper.java:247)
10-03 09:07:48.899: ERROR/Database(30136):     at com.stampii.stampii.comm.rpc.CollectionRPCPacket.executeInsert(CollectionRPCPacket.java:441)
10-03 09:07:48.899: ERROR/Database(30136):     at com.stampii.stampii.synchronization.Synchronization$2.run(Synchronization.java:434)
10-03 09:07:48.899: ERROR/Database(30136):     at java.lang.Thread.run(Thread.java:1102)