Autore Topic: errore sqlite  (Letto 563 volte)

Offline Kecco11

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    GS4
errore sqlite
« il: 27 Luglio 2013, 19:07:53 CEST »
0
Ciao, ho aggiunto altri campi al mio DB ed ora quando inserisco i dati ho questo errore:
Codice: [Seleziona]
07-27 14:25:43.373: E/SQLiteDatabase(1320): Error inserting note_web=44 password_web=33 nome_utente_web=22 nome_web=11
07-27 14:25:43.373: E/SQLiteDatabase(1320): android.database.sqlite.SQLiteConstraintException: prodotti.nome_utente_pc may not be NULL (code 19)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:775)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at it.tiwiz.database.Database.inserisciWeb(Database.java:51)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at le.mie.password.InserisciWeb.onClick(InserisciWeb.java:46)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at android.view.View.performClick(View.java:4204)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at android.view.View$PerformClick.run(View.java:17355)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at android.os.Handler.handleCallback(Handler.java:725)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at android.os.Handler.dispatchMessage(Handler.java:92)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at android.os.Looper.loop(Looper.java:137)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at android.app.ActivityThread.main(ActivityThread.java:5041)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at java.lang.reflect.Method.invokeNative(Native Method)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at java.lang.reflect.Method.invoke(Method.java:511)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-27 14:25:43.373: E/SQLiteDatabase(1320):         at dalvik.system.NativeStart.main(Native Method)

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:errore sqlite
« Risposta #1 il: 27 Luglio 2013, 19:26:38 CEST »
0
Se vedi bene il log, ti dice che stai facendo una insert e un campo è NULL. Ti dice anche il file e la riga.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Kecco11

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    GS4
Re:errore sqlite
« Risposta #2 il: 27 Luglio 2013, 19:38:50 CEST »
0
Ok, l'emulatore aveva ancora in memoria il vecchio db....

ora ho un altro problema e cioè: i campi del db sono di tipo Text e se in ingresso scrivo ad esempio "ciao", viene memorizzato e lo vedo nella listview. Se invece scrivo "ciao come stai" (diverse parole staccate una dall'altra) nella listview non viene inserito!!
è un problema del tipo di campo?? o della query??
« Ultima modifica: 28 Luglio 2013, 00:52:02 CEST da Kecco11 »

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:errore sqlite
« Risposta #3 il: 28 Luglio 2013, 13:04:56 CEST »
0
Della query, postala.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Kecco11

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    GS4
Re:errore sqlite
« Risposta #4 il: 28 Luglio 2013, 16:13:16 CEST »
0
eccola
Codice (Java): [Seleziona]
 public Cursor ottieniProdottiPC(){
                       
                  return db.query(false, Script.TABLE_PRODOTTI, null, Script.CAMPO1, null, Script.CAMPO2, Script.CAMPO3, null, null);
                                                //null /*possiamo specificare quali colonne prendere*/,
                                                //null /*su quali campi fare il SELECT*/,
                                                //null /*per quali valori*/,
                                                //null /*GROUP BY*/,
                                                //null /*HAVING*/,  
                                        //null /*ORDER BY*/);
                  }

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:errore sqlite
« Risposta #5 il: 28 Luglio 2013, 20:26:57 CEST »
0
Posta anche la query di inserimento.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Kecco11

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    GS4
Re:errore sqlite
« Risposta #6 il: 28 Luglio 2013, 23:41:55 CEST »
0
query di inserimento:
Codice (Java): [Seleziona]
public void inserisciPc(String nome_utente_pc,String password_pc,String note_pc){
                        //utilizziamo le ContentValues per tenere traccia di cosa vogliamo inserire
                        ContentValues cv = new ContentValues();
                        //inseriamo cosa ci viene passato
                        cv.put(Script.NOME_UTENTE_PC, nome_utente_pc);
                        cv.put(Script.PASSWORD_PC, password_pc);
                        cv.put(Script.NOTE_PC, note_pc);
                        //e facciamo l'inserimento nel database
                        db.insert(Script.TABLE_PRODOTTI, null, cv);
                }

query risultato:
Codice (Java): [Seleziona]
 public Cursor ottieniProdottiPC(){
                       
                  return db.query(false, Script.TABLE_PRODOTTI, null, Script.NOME_UTENTE_PC, null, Script.PASSWORD_PC, Script.NOTE_PC, null, null);
                                                //null /*possiamo specificare quali colonne prendere*/,
                                                //null /*su quali campi fare il SELECT*/,
                                                //null /*per quali valori*/,
                                                //null /*GROUP BY*/,
                                                //null /*HAVING*/,  
                                        //null /*ORDER BY*/);
                  }

a questo punto posto anche la tabella_
Codice (Java): [Seleziona]
public static final String NOME_DB = "tutorial";
        public static final int VERSIONE_DB = 1;

        //definisco il nome della tabella, le colonne e la query di creazione
        public static final String TABLE_PRODOTTI = "prodotti";
        public static final String _ID = "_id";        
        public static final String NOME_WEB = "nome_web";
        public static final String NOME_UTENTE_WEB = "nome_utente_web";
        public static final String PASSWORD_WEB = "password_web";
        public static final String NOTE_WEB = "note_web";
        public static final String NOME_UTENTE_PC = "nome_utente_pc";
        public static final String PASSWORD_PC = "password_pc";
        public static final String NOTE_PC = "note_pc";
        public static final String NOME_BANCA = "nome_banca";
        public static final String NOME_UTENTE_BANCA = "nome_utente_banca";
        public static final String PASSWORD_BANCA = "password_banca";
        public static final String NOTE_BANCA = "note_banca";
        public static final String NOME_CARTA = "nome_carta";//carta
        public static final String NUMERO_CARTA = "numero_carta";
        public static final String PIN = "pin";
        public static final String CVV = "cvv";
        public static final String SCADENZA = "scadenza";
        public static final String BLOCCO = "blocco";
        public static final String NOTE_CARTA = "note_carta";
       
        public static final String CREATE_TABLE_PRODOTTI = "CREATE TABLE IF NOT EXISTS " + TABLE_PRODOTTI + " ("
                        + _ID + " integer primary key autoincrement, "
                        + NOME_WEB + " text, "
                        + NOME_UTENTE_WEB + " text, "
                        + PASSWORD_WEB + " text, "
                        + NOTE_WEB + " text, "
                        + NOME_UTENTE_PC + " text, "
                        + PASSWORD_PC + " text, "
                        + NOTE_PC + " text, "
                        + NOME_BANCA + " text, "
                        + NOME_UTENTE_BANCA + " text, "
                        + PASSWORD_BANCA + " text, "
                        + NOTE_BANCA + " text, "
                        + NOME_CARTA + " text, "
                        + NUMERO_CARTA + " integer, "
                        + PIN + " integer, "
                        + CVV + " integer, "
                        + SCADENZA + " text, "
                        + BLOCCO + " text, "
                        + NOTE_CARTA + " text);";
        }

Allora i fatti stanno così: se in ingresso inserisco un valore numerico, nella listview è tutto ok. Invece se in ingresso inserisco un qualsiasi altro valore ma di testo es."sole" nella listview non viene inserito.
preciso che questa prova la fa sto facendo con i campi di di tipo Text
« Ultima modifica: 29 Luglio 2013, 18:20:23 CEST da Kecco11 »