CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 4eyes81 con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: elmegio con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: bluemask con ben 43 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 3 su 3
Discussione:

Controllare se esiste un id nel database SQLITE

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Jan 2013
    Messaggi
    18

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Angry

    Controllare se esiste un id nel database SQLITE

    Ragazzi ho bisogno di voi, spero che qualcuno si degni di aiutami.. allora ho un database con un primary key "id" e devo controllare se un determinato id esiste.. vi posto i codici ce ho scritto:

    la funziona che viene richiamata nel database è questa:
    codice:
    public int checkIdExist(String id) {
    		// TODO Auto-generated method stub
    		//se esiste ritorno true altrimenti false
    		Cursor c = ourDatabase.query(DATABASE_TABLE_LIBROCONTABILE, new String[] {KEY_ROWID}, KEY_ROWID=id, null, null, null, null);
    		c.moveToFirst();
    		int result = c.getCount();
    		
    		return result;
    	}
    e richiamo questa funziona nell'activity cosi:


    codice:
    String id = nOp.getText().toString(); //predo l'id
    				if (id.isEmpty() == true){ //se è vuoto mando un errore
    					Dialog d = new Dialog(this);
    					d.setTitle("FAILURE");
    					TextView tv = new TextView(this);
    					tv.setText("Inserisci il numero dell'operazione!");
    					d.setContentView(tv);
    					d.show();
    				}else {
    					DatabasePartitaDoppia db = new DatabasePartitaDoppia(this);
    					db.open();
    					int ck = db.checkIdExist(id); //qui richiamo il database per controlare se esiste
    					db.close();
    					if (ck == 0){ //controllo se le righe di risultato siano = 0 quindi mando un errore
    						Dialog d = new Dialog(this);
    						d.setTitle("FAILURE");
    						TextView tv = new TextView(this);
    						tv.setText("Inserisci un id esstente!");
    						d.setContentView(tv);
    						d.show();
    					}else{//altrimenti se le righe sono diverse da 0 facio partire l'activity
    						Intent myint = new Intent(getBaseContext(), ModOperation.class);
    						myint.putExtra("id", id);
    						startActivity(myint);
    					}
    				}
    Controllo se l'id è vuoto, se è vuoto mando un messaggio d'errore, poi faccio la chiamata al database per vedere se mi trova righe per quell id, se il risultato è = 0 mando un mex d'errore altrimenti faccio partire l'activity.

    Il problema è che il tutto non funziona non so come mai, il logcat è questo:

    codice:
    01-27 16:50:12.037: E/AndroidRuntime(5772): FATAL EXCEPTION: main
    01-27 16:50:12.037: E/AndroidRuntime(5772): android.content.res.Resources$NotFoundException: String resource ID #0x1
    01-27 16:50:12.037: E/AndroidRuntime(5772): 	at android.content.res.Resources.getText(Resources.java:260)
    01-27 16:50:12.037: E/AndroidRuntime(5772): 	at android.widget.TextView.setText(TextView.java:3646)
    01-27 16:50:12.037: E/AndroidRuntime(5772): 	at com.example.partitadoppia.LibroContabile.onClick(LibroContabile.java:167)
    01-27 16:50:12.037: E/AndroidRuntime(5772): 	at android.view.View.performClick(View.java:3558)
    01-27 16:50:12.037: E/AndroidRuntime(5772): 	at android.view.View$PerformClick.run(View.java:14152)
    01-27 16:50:12.037: E/AndroidRuntime(5772): 	at android.os.Handler.handleCallback(Handler.java:605)
    01-27 16:50:12.037: E/AndroidRuntime(5772): 	at android.os.Handler.dispatchMessage(Handler.java:92)
    01-27 16:50:12.037: E/AndroidRuntime(5772): 	at android.os.Looper.loop(Looper.java:137)
    01-27 16:50:12.037: E/AndroidRuntime(5772): 	at android.app.ActivityThread.main(ActivityThread.java:4514)
    01-27 16:50:12.037: E/AndroidRuntime(5772): 	at java.lang.reflect.Method.invokeNative(Native Method)
    01-27 16:50:12.037: E/AndroidRuntime(5772): 	at java.lang.reflect.Method.invoke(Method.java:511)
    01-27 16:50:12.037: E/AndroidRuntime(5772): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
    01-27 16:50:12.037: E/AndroidRuntime(5772): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
    01-27 16:50:12.037: E/AndroidRuntime(5772): 	at dalvik.system.NativeStart.main(Native Method)

  2.  
  3. #2
    Baby Droid


    Registrato dal
    Mar 2012
    Messaggi
    16

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    public int checkIdExist(String id)

    in questo metodo non estrai l'id che ti serve, ma come fai tu posizioni il cursore al primo elemento e poi ti salvi il numero di elementi salvati e NON estrai praticamente nulla.

    per estrarre l'id devi, dopo aver posizionato il cursore sul primo elemento come hai già fatto, risalire all'indice della colonna id attraverso index=c.getColumnindex("id") e poi attraverso id=c.getInt(index) ricavarti l'id che ti serve. (io ho considerato come intero il tuo id)

  4. #3
    Baby Droid


    Registrato dal
    Aug 2011
    Messaggi
    44

    Ringraziamenti
    0
    Ringraziato 6 volte in 6 Posts
    Predefinito

    Devi usare la risposta del c.moveToFirst() che è true se il cursore è pieno mentre è false se è vuoto. Quindi la tuo funzione restituirà un boolean mentre l'id deve essere un long

    codice:
    public boolean checkIdExist(long id) {
         Cursor c = ourDatabase.query(DATABASE_TABLE_LIBROCONTABILE, new String[] {KEY_ROWID}, KEY_ROWID=id, null, null, null, null);
         boolean result=c.moveToFirst();
         c.close();
         return result;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy