Autore Topic: bind or column index out of range  (Letto 512 volte)

Offline Rufio

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
bind or column index out of range
« il: 08 Giugno 2011, 17:39:28 CEST »
0
Salve a tutti sto ultimando un progetto riguardo la gestione dei punti di interesse ma sono bloccato a causa di questo errore che non riesco a risolvere.


Vi posto la classe "incriminata" ed il relativo LogCat

Codice (Java): [Seleziona]
public class ModificaPOI extends ModificaPOI1 {

        public double LatitudineRicevutaMod;
    public double LongitudineRicevutaMod;
    public String LatitudineRicevutaStringMod;
    public String LongitudineRicevutaStringMod;
    public static String DB_NAME3 = "PointOfInterestUltimate.db";
    public int LatitudineRicevutaIntMod;
    public int LongitudineRicevutaIntMod;
    String categoriesType;
   
    public SQLiteDatabase databaseModify = null;
   
    public String IdModPoi;
   
        public Cursor cursorMod;

        public String TitoloPOI;

        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.modifica);
                VariabiliGlobali app = ( VariabiliGlobali ) getApplication();
                IdModPoi = app.getData2();
                TitoloPOI= app.getData2();
                Toast.makeText(ModificaPOI.this,""+IdModPoi+"", Toast.LENGTH_SHORT).show();
                //eseguo una prima query per riempire i campi con i dati che erano salvati nel DB
                String[] whereIDPOI ={IdModPoi};
                //String[] whereTitoloPOI ={TitoloPOI};
                String[] projectMod ={"_id","titolo","descrizione","categoria"};
               
                SQLiteQueryBuilder builderMod = new SQLiteQueryBuilder ();
                builderMod.setTables("PuntiDiInteresse");
                SQLiteDatabase databaseMod = openOrCreateDatabase(DB_NAME3, Context.MODE_WORLD_WRITEABLE,null);
                Cursor cursorMod = builderMod.query(databaseMod, projectMod, "_id", whereIDPOI, null, null, null, null);         -----> riga n.58 il LogCat segnala errore
               
                int idIndex = cursorMod.getColumnIndex("_id");
                int titoloIndex = cursorMod.getColumnIndex("titolo");
                int descrizioneIndex = cursorMod.getColumnIndex("descrizione");
        int catIndex = cursorMod.getColumnIndex("categoria");
       
       
       
        final TextView TextModId = (TextView)findViewById(R.id.IdMod);
               
                final EditText addtitolopoi1Mod = (EditText)findViewById(R.id.titolomod);
                final EditText adddescrizionepoi1Mod = (EditText)findViewById(R.id.descrizionemod);

                final String[] addcategoriesLabels = getResources().getStringArray(R.array.categories);
               
                // Creiamo un Adapter da utilizzare per lo spinner
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,addcategoriesLabels);
                // Otteniamo il riferimento allo Spinner
                Spinner spinner = (Spinner)findViewById(R.id.spinner1);
                // Ci registriamo per gestire gli eventi di selezione
                spinner.setOnItemSelectedListener(new OnItemSelectedListener(){

                public void onItemSelected(AdapterView<?> adapterView, View view,
                                        int position, long id) {
                                categoriesType = addcategoriesLabels[position];
                        }

                       
                public void onNothingSelected(AdapterView<?> arg0) {
                                // Associamo lo scale di default
                        categoriesType = "Altro";

                }      
                });                                            
                // Associamo l'adapter
                spinner.setAdapter(adapter);
               
       
               
                cursorMod.moveToFirst();        
                String Id = cursorMod.getString(idIndex);
       
                TextModId.setText(Id);


               
        String Titolo = cursorMod.getString(titoloIndex);
        addtitolopoi1Mod.setText(Titolo);
       
        String Descrizione = cursorMod.getString(descrizioneIndex);
        adddescrizionepoi1Mod.setText(Descrizione);
                     
        cursorMod.close();
       
        databaseMod.close();
        // Ora posso sovrascrivere  con dati nuovi

        // Gestiamo il bottone
        Button ModificaMod = (Button)findViewById(R.id.ModificaMod);
        ModificaMod.setOnClickListener(new OnClickListener(){

               
                        public void onClick(View arg0) {

                        // inserisco nelle variabili cio che leggo dagli Edit Text
                        String addtitolopoiMod = addtitolopoi1Mod.getText().toString();
                       
                        String adddescrizionepoiMod = adddescrizionepoi1Mod.getText().toString();

                        String addcategoriapoiMod = categoriesType;

                       
                        String ModificaPoi = "UPDATE PuntiDiInteresse SET titolo='"+addtitolopoiMod+"',descrizione='"+adddescrizionepoiMod+"',categoria='"+addcategoriapoiMod+"' WHERE _id='"+IdModPoi+"';";
                       

                                try{
                                        databaseModify = openOrCreateDatabase(DB_NAME3,SQLiteDatabase.CREATE_IF_NECESSARY,null);
                                        databaseModify.execSQL(ModificaPoi);
                                         Toast.makeText(ModificaPOI.this,
                                                         "Modifica avvenuta con successo", Toast.LENGTH_SHORT).show();
                                }catch (SQLException e){
                                        Toast.makeText(ModificaPOI.this,
                                                 "Modifica non avvenuta", Toast.LENGTH_SHORT).show();
                                }
                                finish();
                        }});
       
                               
               
                Button Indietrog3 = (Button) findViewById(R.id.indietromenu);
                Indietrog3.setOnClickListener(new OnClickListener() {
                       
                        public void onClick(View arg0) {
                                finish();
                        }
                });    
               
        }

}


Codice: [Seleziona]

06-08 15:26:32.375: ERROR/AndroidRuntime(440): java.lang.RuntimeException: Unable to start activity ComponentInfo{android.poinavigatorbeta/android.poinavigatorbeta.ModificaPOI}: android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x318e20
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.os.Looper.loop(Looper.java:123)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.app.ActivityThread.main(ActivityThread.java:4627)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at java.lang.reflect.Method.invokeNative(Native Method)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at java.lang.reflect.Method.invoke(Method.java:521)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at dalvik.system.NativeStart.main(Native Method)
06-08 15:26:32.375: ERROR/AndroidRuntime(440): Caused by: android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x318e20
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.database.sqlite.SQLiteProgram.native_bind_string(Native Method)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:241)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.database.sqlite.SQLiteQuery.bindString(SQLiteQuery.java:182)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:48)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:330)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.poinavigatorbeta.ModificaPOI.onCreate(ModificaPOI.java:58)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
06-08 15:26:32.375: ERROR/AndroidRuntime(440):     ... 11 more


confido  nel vostro aiuto dato che anche sul web non ho trovato risposte utili per risolvere il mio problema

grazie  :-)