Autore Topic: Metodo ricerca stringa db errato  (Letto 417 volte)

Offline Trotto23

  • Utente junior
  • **
  • Post: 94
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows Vista
Metodo ricerca stringa db errato
« il: 27 Febbraio 2014, 22:04:01 CET »
0
Ragazzi sapete dirmi se questo metodo ha qualcosa di errato ?
finduser sarebbe l'username inserito dall' utente , io voglio vedere se e' presente nel mio database
La mia tabella CredenzialiTable ha come attributi : id ( PK ) , USER  e PASSWORD


Codice (Java): [Seleziona]
public Cursor getUsername( String finduser )
        {
                String[]columns = { "_id" };
                String selection = "user = ?";
                String[] selectionArgs = { finduser };
                String orderBy = null;
                return (getReadableDatabase().query(CredenzialiTable.TABLE_NAME, columns , selection, selectionArgs , null, null, null, orderBy));
        }


Nel main ho : 
(userName.getText().toString() <-- Ricavo l'username inserito dall'utente
Codice (Java): [Seleziona]
Cursor cursor = mDatabaseHelper.getUsername(userName.getText().toString());
u = cursor.getString(2);  //Ricavo user
p = cursor.getString(3); //Ricavo password
« Ultima modifica: 27 Febbraio 2014, 22:06:48 CET da Trotto23 »

Offline mirkus87

  • Utente junior
  • **
  • Post: 56
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
  • Play Store ID:
    Mirko Vitiello
  • Sistema operativo:
    Windows 7
Re:Metodo ricerca stringa db errato
« Risposta #1 il: 27 Febbraio 2014, 23:48:38 CET »
0
Non vorrei dire una cavolata, ma non dovresti scorrere il cursore prima di accedere ai campi del resultset?
Codice (Java): [Seleziona]
while (cursor.moveToNext()) {
    u = cursor.getString(2);  //Ricavo user
    p = cursor.getString(3); //Ricavo password
    break;
}


Offline ciccio

  • Utente junior
  • **
  • Post: 65
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Francesco Cervone
  • Sistema operativo:
    Mac OS X 10.9
Re:Metodo ricerca stringa db errato
« Risposta #2 il: 28 Febbraio 2014, 08:44:29 CET »
0
Non vorrei dire una cavolata, ma non dovresti scorrere il cursore prima di accedere ai campi del resultset?
Codice (Java): [Seleziona]
while (cursor.moveToNext()) {
    u = cursor.getString(2);  //Ricavo user
    p = cursor.getString(3); //Ricavo password
    break;
}

Esattamente. La cosa che manca è l'istruzione
Codice (Java): [Seleziona]
cursor.moveToNext();per spostarti nella prima riga del risultato della query.

Offline Trotto23

  • Utente junior
  • **
  • Post: 94
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows Vista
Re:Metodo ricerca stringa db errato
« Risposta #3 il: 28 Febbraio 2014, 11:17:07 CET »
0
Quindi nel main devo scrivere :                                                                                               
Codice (Java): [Seleziona]
Cursor cursor = mDatabaseHelper.getUsername(userName.getText().toString());
cursor.moveToNext();
u = cursor.getString(2);  //Ricavo user
p = cursor.getString(3); //Ricavo password

Offline mirkus87

  • Utente junior
  • **
  • Post: 56
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
  • Play Store ID:
    Mirko Vitiello
  • Sistema operativo:
    Windows 7
Re:Metodo ricerca stringa db errato
« Risposta #4 il: 28 Febbraio 2014, 11:57:49 CET »
0
Si. Diciamo che se fai il ciclo while sei sicuro che ci sia qualcosa da leggere. (Ovvero che la query estragga almeno un record)

Offline Trotto23

  • Utente junior
  • **
  • Post: 94
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows Vista
Re:Metodo ricerca stringa db errato
« Risposta #5 il: 28 Febbraio 2014, 12:57:45 CET »
0
Codice (Java): [Seleziona]
public Cursor getUsername( String finduser )
        {
                String[]columns = { "_id" };
                String selection = "user = ?";
                String[] selectionArgs = { finduser };
                String orderBy = null;
                return (getReadableDatabase().query(CredenzialiTable.TABLE_NAME, columns , selection, selectionArgs , null, null, null, orderBy));
        }
Questo metodo quindi dobrebbe essere giusto no ? Perche se lo uso senza fare niente , senza gestire niente mi crasha l'app comunque

Offline mirkus87

  • Utente junior
  • **
  • Post: 56
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
  • Play Store ID:
    Mirko Vitiello
  • Sistema operativo:
    Windows 7
Re:Metodo ricerca stringa db errato
« Risposta #6 il: 28 Febbraio 2014, 13:13:34 CET »
0
Dovresti postare il logCat

Pero' analizzando il sorgente mi pare di capire che la tua query estragga solo una colonna ("_id") mentre poi cerchi di accedere a colonne  che non sono state definite quando fai cursor.getString(2) e cursor.getString(3).