CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: miseusegau con ben 22 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: AI0LIA con ben 199 Thanks ricevuti negli ultimi sette giorni
Utente del mese: AI0LIA con ben 448 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 3 su 3
Discussione:

Controllare se esiste un id nel database SQLITE

  1. #1
    Baby Droid

    Registrato dal
    Jan 2013
    Messaggi
    18
    Thanks
    0
    Thanked 0 Times 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
    Thanks
    0
    Thanked 1 Time 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
    Thanks
    0
    Thanked 6 Times 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 repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •