Когда я пытаюсь заполнить БД методом OnClick, приложение вылетает со следующими ошибками:
05-28 10:18:44.795 24503-25060/com.example.igardini.visualposmobile E/SQLiteLog: (283) recovered 9 frames from WAL file /data/data/com.example.igardini.visualposmobile/databases/clienti_db-wal
05-28 10:18:44.824 24503-25060/com.example.igardini.visualposmobile E/SQLiteLog: (1555) abort at 32 in [INSERT OR ABORT INTO `clienti`(`ID_CLI`,`COD_CLI`,`RS1_CLI`,`RS2_CLI`,`IND_CLI`,`LOC_CLI`,`CITTA_CLI`,`CAP_CLI`,`NAZ_CLI`,`PIVA_CLI`,`PROV_CLI`,`CF_CLI`,`SCONTO_CLI`,`LISTINO_CLI`,`IDMOV_CLI`,`
05-28 10:18:44.825 24503-25060/com.example.igardini.visualposmobile E/AndroidRuntime: FATAL EXCEPTION: Thread-18872
Process: com.example.igardini.visualposmobile, PID: 24503
android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: clienti.ID_CLI (code 1555)
at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782)
at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
at android.arch.persistence.db.framework.FrameworkSQLiteStatement.executeInsert(FrameworkSQLiteStatement.java:50)
at android.arch.persistence.room.EntityInsertionAdapter.insert(EntityInsertionAdapter.java:64)
at com.example.igardini.visualposmobile.ClientiDao_Impl.insert(ClientiDao_Impl.java:166)
at com.example.igardini.visualposmobile.MainActivity$1$1.run(MainActivity.java:82)
at java.lang.Thread.run(Thread.java:818)
Вот что в моей MainActivity подключено к БД:
posRoomDatabase = Room.databaseBuilder(getApplicationContext(),
POSRoomDatabase.class, DATABASE_NAME)
.fallbackToDestructiveMigration()
.build();
DB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
clienti clients =new clienti();
clients.setID(appBODY[0]);
clients.setCOD(appBODY[1]);
clients.setRS1(appBODY[2]);
clients.setRS2(appBODY[3]);
clients.setIND(appBODY[4]);
clients.setLOC(appBODY[5]);
clients.setCIT(appBODY[6]);
clients.setCAP(appBODY[7]);
clients.setNAZ(appBODY[8]);
clients.setPIVA(appBODY[9]);
clients.setPROV(appBODY[10]);
clients.setCF(appBODY[11]);
clients.setSCON(appBODY[12]);
clients.setLIST(appBODY[13]);
clients.setIDMOV(appBODY[14]);
clients.setDESMOV(appBODY[15]);
clients.setM2(appBODY[16]);
clients.setMEM(appBODY[17]);
clients.setMAIL(appBODY[18]);
clients.setIDPAG(appBODY[19]);
clients.setDESPAG(appBODY[20]);
clients.setESENZ(appBODY[21]);
posRoomDatabase.clientiDao().insert(clients);
}
}) .start();
}
});
На самом деле мое приложение просто берет HTML-код с веб-сайта, конвертирует строку, просто беря данные, и все эти данные собираются в строку массива, поэтому я просто пытаюсь заполнить БД этими данными, но я не очень разбираюсь в Androidне могли бы вы мне помочь?
После того, как я изменил запрос INSERT, я получаю следующую ошибку:
05-28 11:06:12.345 31659-31677/com.example.igardini.visualposmobile E/Database: file is encrypted or is not a database: , while compiling: select count(*) from sqlite_master;
net.sqlcipher.database.SQLiteException: file is encrypted or is not a database: , while compiling: select count(*) from sqlite_master;
at net.sqlcipher.database.SQLiteCompiledSql.native_compile(Native Method)
at net.sqlcipher.database.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
at net.sqlcipher.database.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
at net.sqlcipher.database.SQLiteProgram.<init>(SQLiteProgram.java:89)
at net.sqlcipher.database.SQLiteQuery.<init>(SQLiteQuery.java:48)
at net.sqlcipher.database.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:60)
at net.sqlcipher.database.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1867)
at net.sqlcipher.database.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1785)
at net.sqlcipher.database.SQLiteDatabase.keyDatabase(SQLiteDatabase.java:2486)
at net.sqlcipher.database.SQLiteDatabase.openDatabaseInternal(SQLiteDatabase.java:2415)
at net.sqlcipher.database.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1149)
at net.sqlcipher.database.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1116)
at net.sqlcipher.database.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1065)
at net.sqlcipher.database.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1226)
at com.amitshekhar.server.RequestHandler.openDatabase(RequestHandler.java:185)
at com.amitshekhar.server.RequestHandler.getTableListResponse(RequestHandler.java:304)
at com.amitshekhar.server.RequestHandler.handle(RequestHandler.java:113)
at com.amitshekhar.server.ClientServer.run(ClientServer.java:76)
at java.lang.Thread.run(Thread.java:818)