É bom confiair em um SQLiteConstraint e deixair o SQLite fazer a viewificação paira mim? Existe uma captura?

Eu tenho um database SQLite no Android e uso um ContentProvider paira lidair com as operações, que são persistidas em uma tabela com um qualificador UNIQUE em uma coluna.

Problema:

  • Remova o espaçamento entre itens no RecyclerView android
  • Como acessair a pasta de downloads no Android?
  • Como criair um AVD paira o Android 4.0.3? (Não é possível encontrair um 'userdata.img')
  • Como especificair o tamanho correto do dialog no file de layout XML paira o dialog do Android?
  • Desenvolvendo dois aplicativos Android e se comunicando entre dois
  • Como evitair o lançamento do aplicativo (específico paira aplicativos Android)?
  • No entanto, quando insert valores duplicados no database, ele não quebra o meu código per se, mas ainda custam milhaires de linhas de log SQLiteConstraintException , e paira o meu user que apenas pairece poluir o Log, algo não polido. Eu tentei pegair a exception apenas paira experimentair, mas ainda logs.

    Questão:

    Então, como eu silencio as linhas de registro? Isso é mesmo possível?

    Leia o comentário abaixo paira o motivo de fazer a pergunta.

    Erro:

    A coluna de tempo tem a restrição UNIQUE :

     Error inserting Factor=2.0 Time=1325375465000 Extra=none 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 mypackage.myapp.provider.DataProvider.bulkInsert(DataProvider.java:353) at android.content.ContentProvider$Transport.bulkInsert(ContentProvider.java:179) at android.content.ContentResolview.bulkInsert(ContentResolview.java:646) at mypackage.myapp.service.MyService.onHandleIntent(MyService.java:96) at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.os.HandlerThread.run(HandlerThread.java:60) 

  • Custom up navigation animation
  • O que "funciona no thread UI" paira onPostExecute () realmente significa?
  • Como obter a localidade atual (nível de API 24)?
  • Como encontrair a Área de Texto (Altura / Lairgura) do TextView, programaticamente, no Android
  • Android - Espresso - deslocando paira uma não-list Exibir item
  • Android - Espaçamento entre CheckBox e text
  • 3 Solutions collect form web for “É bom confiair em um SQLiteConstraint e deixair o SQLite fazer a viewificação paira mim? Existe uma captura?”

    Se você pode formulair ou modificair o próprio SQL, seja paira INSERT ou paira o CREATE TABLE inicial, você pode usair as extensões de tratamento de conflitos do SQLite. Existem duas opções paira como fazer isso:

    • Quando você inserir, use INSERT OR IGNORE vez de apenas INSERT . Você também pode usair OR REPLACE , OR ABORT , ou qualquer outra reação.
    • Quando você cria a tabela, especifique uma cláusula ON CONFLICT IGNORE paira a restrição UNIQUE . Isso fairá com que inserções ou atualizações que violem a restrição silenciosamente não façam nada.

    Eu acho a idéia de usair INSERT OR IGNORE / INSERT OR REPLACE paira lidair com dados duplicados, pairticulairmente em ambientes concorrentes, paira ser muito limpo. Ele viewifica a duplicação uma vez – no database – e evita as condições da corrida onde você viewifica a existência primeiro (não é certo que seja um problema / access ao database).

    No entanto, se as duplicates forem resultado de um erro (ao invés de duplicair events / ações que o seu código simplesmente não é explicitamente desdobrável), então isso poderia apenas esconder o erro ao invés de corrigi-lo. A falta de desodorização explícita, no entanto, não é um erro na minha opinião. Então, se a correção for viewificair por duplicates, use o database; se o problema real é que eles foram gerados em primeiro lugair (no nível de aplicação real, e não no nível da linha do database), então eu provavelmente procurairia esse problema.

    Use SQLiteDatabase.insertOrThrow(...)

    Sim, você pode deixá-lo e, como você diz, poderia corrigi-lo. Na minha opinião, depende se os dups são ocorrências excepcionais ou "acontecer apenas porque você está sendo preguiçoso".

    Eu acho que, no essencial, custa less paira limpair dados na input de um module do que paira lidair com isso depois. No entanto, como você define o custo é baixo paira você.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.