Androidがデータベースとコード19への挿入中にエラーを取得しました:制約に失敗しました

やめないで

私はDataBaseHelperAndroidでSQliteを使用するために簡単に書かれています。次のようにクラスを作成した後:

public class DatabaseHandler extends SQLiteOpenHelper{

        private static String DB_PATH                   = "";

        private static final String DATABASE_NAME       = "tsms";

        private static String RECEIVE_FIELDS_TABLE      = "ReceiveFields";

        private static final String COLUMN_ID           = "id";

        private static final String COLUMN_LASTID       = "lastId";

        private static final String COLUMN_SMSNUMBER    = "smsNumber";

        private static final String COLUMN_MOBILENUMBER = "mobileNumber";

        private static final String COLUMN_SENDERNAME   = "senderName";

        private static final String COLUMN_SMSBODY      = "smsBody";

        private static final String COLUMN_RECEIVEDATE  = "receiveDate";

        private static final int DATABASE_VERSION = 1;

        private SQLiteDatabase mDataBase;

        /* UPDATE DATABASE_CREATE FIELD*/

        private static final String DATABASE_CREATE = "CREATE TABLE " + RECEIVE_FIELDS_TABLE + "("
            + COLUMN_ID           + " INTEGER  UNIQUE , "
            + COLUMN_LASTID       + " INTEGER  UNIQUE , "
            + COLUMN_SMSNUMBER    + " VARCHAR  UNIQUE , "
            + COLUMN_MOBILENUMBER + " VARCHAR , "
            + COLUMN_SENDERNAME   + " VARCHAR , "
            + COLUMN_SMSBODY      + " TEXT , "
            + COLUMN_RECEIVEDATE  + " VARCHAR , PRIMARY KEY (" + COLUMN_ID + ", " + COLUMN_LASTID + ", " + "))";

    private Context context;

    public  DatabaseHandler(Context context) {

        super(context, DATABASE_NAME, null, DATABASE_VERSION);

    }


    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {

        sqLiteDatabase.execSQL(DATABASE_CREATE);

    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {


        sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + RECEIVE_FIELDS_TABLE);

        // Create tables again
        onCreate(sqLiteDatabase);
    }

    // Adding new fields
    public void addToReceived(ReceiveFields fields) {

        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put(COLUMN_LASTID,       fields.getLastId());           // ReceiveFields last ID

        values.put(COLUMN_MOBILENUMBER, fields.getMobileNumber());     // ReceiveFields Mobile Number

        values.put(COLUMN_SENDERNAME,   fields.getSenderName());       // ReceiveFields Mobile Number

        values.put(COLUMN_SMSBODY,      fields.getSmsBody());          // ReceiveFields Mobile Number

        values.put(COLUMN_SMSNUMBER,    fields.getSmsNumber());        // ReceiveFields Mobile Number

        values.put(COLUMN_MOBILENUMBER, fields.getMobileNumber());     // ReceiveFields Mobile Number

        values.put(COLUMN_RECEIVEDATE,  String.valueOf(fields.getReceiveDate())); // ReceiveFields Mobile Number

        // Inserting Row
        db.insert(RECEIVE_FIELDS_TABLE, null, values);

        db.close(); // Closing database connection
    }
}

この方法でデータベースへの挿入中にエラーが発生します:

db.addToReceived(new ReceiveFields(

                            Long.valueOf(str1[0]),

                            str1[1],

                            str1[2],

                            URLDecoder.decode(str1[3], "UTF-8"),

                            URLDecoder.decode(str1[4], "UTF-8"),

                            ct.getGregorianDate()));

Log.i 結果:

 29904757    30007227    00120504001    00120504001     sssasaS     2014/8/3

完全なLogCate結果:

08-28 06:35:29.974    2698-2698/ir.tsms E/Database﹕ Error inserting lastId=29904755 receiveDate=2014/8/3 senderName=09127574751 mobileNumber=09127574751 smsNumber=30007227 smsBody=
    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:55)
            at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1549)
            at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1410)
            at ir.tsms.DataBase.DatabaseHandler.addToReceived(DatabaseHandler.java:96)
            at ir.tsms.wsdl.TSMS.getReceivedSMS(TSMS.java:141)
            at ir.tsms.Receive.ResivedSMS.getResivedSMS(ResivedSMS.java:41)
            at ir.tsms.Receive.ResivedSMS.<init>(ResivedSMS.java:36)
            at ir.tsms.Activities.DashboardActivity.onTabSelected(DashboardActivity.java:160)
            at android.support.v7.app.ActionBarImplBase.selectTab(ActionBarImplBase.java:486)
            at android.support.v7.app.ActionBarImplBase.addTab(ActionBarImplBase.java:410)
            at android.support.v7.app.ActionBarImplBase.addTab(ActionBarImplBase.java:401)
            at ir.tsms.Activities.DashboardActivity.onCreate(DashboardActivity.java:68)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
            at android.app.ActivityThread.access$2300(ActivityThread.java:125)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:123)
            at android.app.ActivityThread.main(ActivityThread.java:4627)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:521)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
            at dalvik.system.NativeStart.main(Native Method)

at ir.tsms.wsdl.TSMS.getReceivedSMS(TSMS.java:141) 行は:

db.addToReceived(new ReceiveFields(
mmlooloo

これらのことを確認してください、それはこれらの理由によって引き起こされるかもしれません:

1-に追加COLUMN_IDなかっvaluesため、nullになります。

2-COLUMN_IDそしてそうでCOLUMN_LASTIDはありませんUNIQUE (clear your database or android app data , maybe it stored in your db first time you ran it and now again you want to add you can not because it is not unique now, every time you run, your db is in memory and it is not clread, in order to clear it you must remove app data or run delete SQL statement)

したがって、Eclipseを使用する場合は、DBファイルを確認することをお勧めします。

http://www.tylerfrankenstein.com/browse-android-emulator-sqlite-database-eclipse

3-COLUMN_IDそしてCOLUMN_LASTIDintはない私は意味するfields.getLastId()かもしれないString

テーブルの定義と挿入する値を正確に確認してください!!!

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Androidがデータベースとコード19への挿入中にエラーを取得しました:制約に失敗しました

分類Dev

android.database.sqlite.SQLiteConstraintExceptionの挿入エラー:NOT NULL制約に失敗しました:result.high(コード1299)

分類Dev

Androidのデータベースにデータを挿入中にエラーが発生しました

分類Dev

データベースへの挿入に失敗しました

分類Dev

Laravel5:関連するデータベーステーブルへのデータの書き込み中にQueryExceptionが発生しました。エラー:「子行を追加または更新できません:外部キー制約が失敗します」

分類Dev

AndroidのSQLiteデータベースでデータを挿入中にエラーが発生しました

分類Dev

SQLiteデータベースへのデータの挿入中にエラーが発生しました

分類Dev

mySQLデータベースへのデータの挿入中にエラーが発生しました

分類Dev

NodeJS-データベースへのデータ挿入中にMysqlエラーが発生しました

分類Dev

新しい行を挿入すると、Android Room FOREIGN KEY制約が失敗しました(コード787)

分類Dev

EFコアSQLITE-SQLiteエラー19: 'UNIQUE制約に失敗しました

分類Dev

エラーコード:1822。外部キー制約の追加に失敗しました。制約のインデックスがありません

分類Dev

外部キー制約の追加に失敗しました。制約のインデックスがありませんエラーコード:1822

分類Dev

SQliteデータベースへの挿入中に列名エラーが発生しました

分類Dev

データベースへの挿入中にエラーが発生しました

分類Dev

データベースへのデータの挿入に失敗しました

分類Dev

データベースへのデータの挿入に失敗しました

分類Dev

データを新しいテーブルにコピー中にNOTNULL制約が失敗しました

分類Dev

UNIQUE制約が失敗しました:SQLiteデータベース:Android

分類Dev

休止状態を使用してデータベースにデータを挿入しようとしたときにエラーが発生しました。エラーは制約違反例外です (Oracle DB を使用)

分類Dev

Cassandraへのデータ挿入中にエラーが発生しました

分類Dev

codeigniterとmysqlを使用したデータの挿入に失敗しました

分類Dev

データベースにデータを挿入中にエラーが発生しました

分類Dev

データmysqlデータベースの挿入中にエラーが発生しました

分類Dev

モデルへのjsonデータの投稿中にDjangoNotnull制約が失敗しました

分類Dev

RoomデータベースでFOREIGNKEY制約が失敗しました(コード787)

分類Dev

データバインディングで制約ビューを使用すると、エラー「タスク ':app:mergeDebugResources'の実行に失敗しました。>

分類Dev

データベース-挿入しようとするとクエリが失敗しました

分類Dev

データベーステーブルへのデータの挿入中にエラーが発生しました

Related 関連記事

  1. 1

    Androidがデータベースとコード19への挿入中にエラーを取得しました:制約に失敗しました

  2. 2

    android.database.sqlite.SQLiteConstraintExceptionの挿入エラー:NOT NULL制約に失敗しました:result.high(コード1299)

  3. 3

    Androidのデータベースにデータを挿入中にエラーが発生しました

  4. 4

    データベースへの挿入に失敗しました

  5. 5

    Laravel5:関連するデータベーステーブルへのデータの書き込み中にQueryExceptionが発生しました。エラー:「子行を追加または更新できません:外部キー制約が失敗します」

  6. 6

    AndroidのSQLiteデータベースでデータを挿入中にエラーが発生しました

  7. 7

    SQLiteデータベースへのデータの挿入中にエラーが発生しました

  8. 8

    mySQLデータベースへのデータの挿入中にエラーが発生しました

  9. 9

    NodeJS-データベースへのデータ挿入中にMysqlエラーが発生しました

  10. 10

    新しい行を挿入すると、Android Room FOREIGN KEY制約が失敗しました(コード787)

  11. 11

    EFコアSQLITE-SQLiteエラー19: 'UNIQUE制約に失敗しました

  12. 12

    エラーコード:1822。外部キー制約の追加に失敗しました。制約のインデックスがありません

  13. 13

    外部キー制約の追加に失敗しました。制約のインデックスがありませんエラーコード:1822

  14. 14

    SQliteデータベースへの挿入中に列名エラーが発生しました

  15. 15

    データベースへの挿入中にエラーが発生しました

  16. 16

    データベースへのデータの挿入に失敗しました

  17. 17

    データベースへのデータの挿入に失敗しました

  18. 18

    データを新しいテーブルにコピー中にNOTNULL制約が失敗しました

  19. 19

    UNIQUE制約が失敗しました:SQLiteデータベース:Android

  20. 20

    休止状態を使用してデータベースにデータを挿入しようとしたときにエラーが発生しました。エラーは制約違反例外です (Oracle DB を使用)

  21. 21

    Cassandraへのデータ挿入中にエラーが発生しました

  22. 22

    codeigniterとmysqlを使用したデータの挿入に失敗しました

  23. 23

    データベースにデータを挿入中にエラーが発生しました

  24. 24

    データmysqlデータベースの挿入中にエラーが発生しました

  25. 25

    モデルへのjsonデータの投稿中にDjangoNotnull制約が失敗しました

  26. 26

    RoomデータベースでFOREIGNKEY制約が失敗しました(コード787)

  27. 27

    データバインディングで制約ビューを使用すると、エラー「タスク ':app:mergeDebugResources'の実行に失敗しました。>

  28. 28

    データベース-挿入しようとするとクエリが失敗しました

  29. 29

    データベーステーブルへのデータの挿入中にエラーが発生しました

ホットタグ

アーカイブ