Autore Topic: int nel database  (Letto 813 volte)

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
int nel database
« il: 16 Maggio 2011, 15:10:29 CEST »
0
Cia a tutti!
Ho un problema: voglio inserire in un db un int, ma il metodo put vuole come parametro solo stringhe!
Codice: [Seleziona]
public void insertParticipant(String name, int event) {
                ContentValues cv = new ContentValues();
                cv.put(peoName, name);
                cv.put(peoPartic, event);        QUI MI DA ERRORE IN COMPILAZIONE
                mDb.insert(peoTable, null, cv);
        }


Dove sbaglio? come posso inserire un int nel database?

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:int nel database
« Risposta #1 il: 16 Maggio 2011, 15:20:10 CEST »
0
Primo: devi postare il logcat.
Secondo: dopo avere postato il logcat, potremmo parlare del tuo problema.
Terzo: il metodo supporta anche Float, Integer, Boolean e altro....tu stai mettendo un int (tipo primitivo), mentre lui si aspetta un oggetto; mentre il cast implicito è automatico da Integer a int, non è vero il contrario.
Quindi, se event lo fai diventare un oggetto, come istanza della classe Integer, non avrai problemi.
 8-)


« Ultima modifica: 16 Maggio 2011, 17:52:06 CEST da 7h38ugg3r »
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
Re:int nel database
« Risposta #2 il: 16 Maggio 2011, 17:04:03 CEST »
0
Secondo me qui:

Codice (Java): [Seleziona]
cv.put(peoPartic, event);
hai dichiarato peoPartic come int... :)

Se così non fosse allora puoi evitare di leggere il resto del post :P

La classe ContentValues è una specie di HashMap con la differenza che quest'ultima accetta elementi key e value qualsiasi, mentre ContentValues è stata progettata per gestire esclusivamente le coppie (String key, <primitivo> value), dove con <primitivo> si intende... beh si capisce cosa si intende. :P

Dunque, considerato che quel ContentValues cv lo hai creato per passarlo al tuo

Codice (Java): [Seleziona]
mDb.insert(peoTable, null, cv);
allora i valori di peoName e peoPartic DEVONO essere innanzitutto di tipo String ed inoltre dovranno essere uguali ai nomi delle relative colonne che hai creato per il database.

Questo poi non basta, in quanto i tipi di name ed event devono corrispondere ai tipi assegnati alle relative colonne del database. Mmm non so se questo ultimo punto è stato chiaro...  ???
« Ultima modifica: 16 Maggio 2011, 17:06:54 CEST da gGx »
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:int nel database
« Risposta #3 il: 16 Maggio 2011, 17:42:43 CEST »
0
Secondo me qui:

Codice (Java): [Seleziona]
cv.put(peoPartic, event);
hai dichiarato peoPartic come int... :)

Se così non fosse allora puoi evitare di leggere il resto del post :P

La classe ContentValues è una specie di HashMap con la differenza che quest'ultima accetta elementi key e value qualsiasi, mentre ContentValues è stata progettata per gestire esclusivamente le coppie (String key, <primitivo> value), dove con <primitivo> si intende... beh si capisce cosa si intende. :P

Dunque, considerato che quel ContentValues cv lo hai creato per passarlo al tuo

Codice (Java): [Seleziona]
mDb.insert(peoTable, null, cv);
allora i valori di peoName e peoPartic DEVONO essere innanzitutto di tipo String ed inoltre dovranno essere uguali ai nomi delle relative colonne che hai creato per il database.

Questo poi non basta, in quanto i tipi di name ed event devono corrispondere ai tipi assegnati alle relative colonne del database. Mmm non so se questo ultimo punto è stato chiaro...  ???

ContentValues è un'HashMap specializzata, del tipo HashMap<String, Object> che come Object supporta non i tipi primitivi, come indichi tu, ma un numero finito di classi.
Hai specializzato la mia risposta precedente, ma così puoi creare confusione in chi la legge ed è poco esperto.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:int nel database
« Risposta #4 il: 16 Maggio 2011, 17:46:15 CEST »
0
ContentValues è un'HashMap specializzata, del tipo HashMap<String, Object> che come Object supporta non i tipi primitivi, come indichi tu, ma un numero finito di classi.
Hai specializzato la mia risposta precedente, ma così puoi creare confusione in chi la legge ed è poco esperto.

Io in realtà ho sempre inserito variabili di tipo int senza nessun cast e senza problema.

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:int nel database
« Risposta #5 il: 16 Maggio 2011, 17:51:27 CEST »
0
Ora che rileggo il tutto, effettivamente hai ragione.
Ho scritto di getto.

Mi rimangio quanto scritto.
 :-X
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
Re:int nel database
« Risposta #6 il: 16 Maggio 2011, 17:56:29 CEST »
0
ContentValues è un'HashMap specializzata, del tipo HashMap<String, Object> che come Object supporta non i tipi primitivi, come indichi tu, ma un numero finito di classi.
Hai specializzato la mia risposta precedente, ma così puoi creare confusione in chi la legge ed è poco esperto.

Ho cercato di farla più semplice, giusto per far capire che in un ContentValues non ci si può mettere qualcosa del tipo (String key, MioOggetto oggetto). :) Ad essere ancora più precisi ContentValues gestisce: primitivi, loro wrappers ed in più String e byte[].

Edit: ho letto ora la tua risposta 7h38ugg3r lol
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker