Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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

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_Android Sqlite - Fatal编程技术网

Android 在表中插入数据时发生sqlite错误

Android 在表中插入数据时发生sqlite错误,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我正在表中插入数据,当首次成功插入数据时创建数据库,但当关闭并重新启动应用程序时,会出现错误: Error inserting id=1 new=1 title=sample page previous=0 color=0 next=2 state=1 header= ""; android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed at android.database.sqlite.

我正在表中插入数据,当首次成功插入数据时创建数据库,但当关闭并重新启动应用程序时,会出现错误:

Error inserting id=1 new=1 title=sample page previous=0 color=0 next=2 state=1 header= "";
android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1582)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1426)
at com.testjsonparse.MainActivity.parseAndIsertData(MainActivity.java:108)
at java.lang.reflect.Method.invokeNative(Native Method)
这是我在
MainActivity.java中使用的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);     

    dataSource = new ContentsDataSource(this);
    dataSource.open();
    parseAndIsertData();

}


@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    dataSource.open();

}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    Log.i(MY_TAGT, "OnPuse() called");      
    dataSource.close();
}
private void parseAndIsertData() {
    // Creating JSON Parser instance
    MyJSONParser jParser = new MyJSONParser();

    contentDataObject = new ContentDataObject();        
    // getting JSON string from URL
    JSONObject json = jParser.getJSONFromUrl(BASE_URL); 

    try {
        // Getting Array of Contents
        jsonArray = json.getJSONArray(MOBILE_CONTENT);          
        // looping through All Contents
        for(int i = 0; i < jsonArray.length(); i++){

            contentDataObject.setId(jsonArray.getJSONObject(i).getInt(MOBILE_CONTENT_ID));
            contentDataObject.setTitle(jsonArray.getJSONObject(i).getString(MOBILE_CONTENT_TITLE));
            contentDataObject.setFulltext(jsonArray.getJSONObject(i).getString(MOBILE_CONTENT_FULLTEXT));
            contentDataObject.setState(jsonArray.getJSONObject(i).getInt(MOBILE_CONTENT_STATE));
            contentDataObject.setNewValue(jsonArray.getJSONObject(i).getInt(MOBILE_CONTENT_NEW));
            contentDataObject.setHeader(jsonArray.getJSONObject(i).getString(MOBILE_CONTENT_HEADER));
            contentDataObject.setColor(jsonArray.getJSONObject(i).getInt(MOBILE_CONTENT_COLOR));
            contentDataObject.setNext(jsonArray.getJSONObject(i).getString(MOBILE_CONTENT_NEXT));
            contentDataObject.setPrevious(jsonArray.getJSONObject(i).getString(MOBILE_CONTENT_PREVIOUS));

            contentDataObject = dataSource.create(contentDataObject);

            Log.i(MY_TAGT, "Data Inserted " + contentDataObject.getId() + " Times");

        }           

        //textView.setText(builder);
    } catch (JSONException e) {
        e.printStackTrace();
    }
}
编辑
创建表查询是:

private static final String MOBILE_CONTENT_DB_CREATE = "CREATE TABLE "
        + MOBILE_CONTENT_TABLE_NAME + "( " + MOBILE_CONTENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
        MOBILE_CONTENT_TITLE    + " TEXT, " +
        MOBILE_CONTENT_FULLTEXT + " TEXT , " +
        MOBILE_CONTENT_STATE    + " INTEGER , " +
        MOBILE_CONTENT_NEW  + " INTEGER, " +
        MOBILE_CONTENT_HEADER   + " TEXT , " +
        MOBILE_CONTENT_COLOR    + " INTEGER , " +
        MOBILE_CONTENT_NEXT + " TEXT , " +
        MOBILE_CONTENT_PREVIOUS + " TEXT );";

现在我无法找到为什么会发生这个错误。感谢您在表创建中“MOBILE\u CONTENT\u ID”是整数主键自动递增,因此在插入查询中不要将值放入“MOBILE\u CONTENT\u ID”。

在表创建中“MOBILE\u CONTENT\u ID”是整数主键自动递增,所以在插入查询中不要将值放入“MOBILE\u CONTENT\u ID”.

出现此错误是因为您的表具有字段MOBILE\u CONTENT\u ID具有主键并且是自动递增的。并且您正在更改主键。您有两个选项 1.删除该字段的主键
2.不要在自动递增字段中插入值。

出现此错误是因为您的表具有字段MOBILE\u CONTENT\u ID具有主键并且是自动递增的。并且您正在更改主键。您有2个选项 1.删除该字段的主键
2.不要在自动递增字段中插入值。

查看此链接,也阅读此链接,并显示将数据插入数据库的代码。同时发布您的
创建表
查询以及指定的所有约束。。可能存在主键约束问题,一些具有相同ID的记录被插入,引发错误。确保在重新运行应用程序时不会多次添加记录。在表创建中,“MOBILE\u CONTENT\u ID”是整数主键自动递增,因此在插入查询中不要将值添加到“MOBILE\u CONTENT\u ID”。请查看此链接。也请阅读此链接,并显示将数据插入数据库的代码。同时发布您的
create table
查询以及指定的所有约束条件。。可能存在主键约束问题,一些具有相同ID的记录被插入,引发错误。确保在重新运行应用程序时不会多次添加记录。在表创建中,“MOBILE\u CONTENT\u ID”是整数主键自动递增,因此在插入查询中不要将值添加到“MOBILE\u CONTENT\u ID”。
private static final String MOBILE_CONTENT_DB_CREATE = "CREATE TABLE "
        + MOBILE_CONTENT_TABLE_NAME + "( " + MOBILE_CONTENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
        MOBILE_CONTENT_TITLE    + " TEXT, " +
        MOBILE_CONTENT_FULLTEXT + " TEXT , " +
        MOBILE_CONTENT_STATE    + " INTEGER , " +
        MOBILE_CONTENT_NEW  + " INTEGER, " +
        MOBILE_CONTENT_HEADER   + " TEXT , " +
        MOBILE_CONTENT_COLOR    + " INTEGER , " +
        MOBILE_CONTENT_NEXT + " TEXT , " +
        MOBILE_CONTENT_PREVIOUS + " TEXT );";