Autore Topic: Ancora interagire con database sql  (Letto 627 volte)

Offline luca72

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nessuno
  • Sistema operativo:
    kubuntu 12.10
Ancora interagire con database sql
« il: 26 Marzo 2013, 15:23:09 CET »
0
Ciao a tutti ho scritto queste righe:
Codice (Java): [Seleziona]
package com.help;

import java.util.ArrayList;

import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;


public class MainActivity extends Activity {
        public class Moddb {
                Miodb miodb;
                SQLiteDatabase db;
                Cursor cursore;
               
                public void inserisco(String nome, String numero, String nometabella){
                        db = miodb.getWritableDatabase();
                        ContentValues cv = new ContentValues(2);
                        cv.put(miodb.COLUMN_NOME, nome);
                        cv.put(miodb.COLUMN_NUMERO, numero);
                        db.insert(miodb.TABLE_NAME, null, cv);
                }
                public void cancellodadb(int posizione){
                        db = miodb.getWritableDatabase();
                        cursore.moveToPosition(posizione);
                        String rowid = cursore.getString(0);
                        db.delete(miodb.TABLE_NAME, "_id = ?", new String[]{rowid});
                }

        }

        public class Miodb extends SQLiteOpenHelper {
                private static final int DATABASE_VERSION = 1;
            private static final String DATABASE_NAME = "contattiemrgenza";
            private static final String TABLE_NAME = "contatti";
            public static final String COLUMN_ID = "_id";
            public static final String COLUMN_NOME = "nome";
            public static final String COLUMN_NUMERO = "numero";
            private static final String DATABASE_CREATE =
                        "CREATE TABLE " + TABLE_NAME + " ("
                        + COLUMN_ID
                        + " integer primary key autoincrement, " +
                        COLUMN_NOME
                        + " text not null, "
                        +COLUMN_NUMERO
                        +" text not null);";
            Miodb(Context context) {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
            @Override
            public void onCreate(SQLiteDatabase db) {
                db.execSQL(DATABASE_CREATE);
            }
                @Override
                public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                        Log.w(Miodb.class.getName(),
                                "Upgrading database from version " + oldVersion + " to "
                                    + newVersion + ", which will destroy all old data");
                            db.execSQL("DROP TABLE IF EXISTS ");
                            onCreate(db);
                       
                }
               
        }

        ArrayList<String> listItems = new ArrayList<String>();
        ArrayList<String> numeri = new ArrayList<String>();
        ListView listacont;
        ArrayAdapter<String> arrayAdapter;
        final Context context = this;
        AlertDialog.Builder alert;
        int luca ;
        Moddb dbcanc;
        Miodb indb;
               
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                listacont = (ListView)findViewById(R.id.listView1);
                listacont.setOnItemClickListener(new OnItemClickListener() {
                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                /*arrayAdapter.remove(arrayAdapter.getItem(position));*/
                                luca = position;
                                AlertDialog alertDialog = alert.create();
                        alertDialog.show();
                        }
            });
               
                alert = new AlertDialog.Builder(context);
        alert.setTitle("Cancello"); //Set Alert dialog title here
        alert.setMessage("Sei sicuro di voler eliminare il conatatto?"); //Message here
        alert.setNegativeButton("No", null);
        alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
                arrayAdapter.remove(arrayAdapter.getItem(luca));
                dialog.cancel();
                dbcanc.cancellodadb(luca);
               
        }
        });
       
        }
       
       

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.main, menu);
                return true;
        }
       
       
    public void Vedo(View v) {
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
        startActivityForResult(intent, 1);                
    }
   
       
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (data != null) {
                Uri uri = data.getData();

                if (uri != null) {
                    Cursor c = null;
                    try {
                        c = getContentResolver().query(uri, new String[]{
                                    ContactsContract.CommonDataKinds.Phone.NUMBER,  
                                    ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,},
                                null, null, null);

                        if (c != null && c.moveToFirst()) {
                            String number = c.getString(0);
                            String nome = c.getString(1);
                            numeri.add(number);
                            showSelectedNumber(number, nome);
                        }
                    } finally {
                        if (c != null) {
                            c.close();
                        }
                    }
                }
            }
        }
        public void showSelectedNumber(String number, String nome) {
            Toast.makeText(this, nome+": " + number, Toast.LENGTH_LONG).show();
            mettolista(number,nome);
           
        }
       
        public void mettolista(String number, String nome){
                listacont = (ListView)findViewById(R.id.listView1);
                listItems.add(nome + " : " + number);
                arrayAdapter =  new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, listItems);
                listacont.setAdapter(arrayAdapter);
                dbcanc.inserisco(nome, number, "contatti");
               
        }

}

so che è mail fatto ma non ho mai usato il java, mi va in errore quando passa sulle seguenti righe:
1) dbcanc.inserisco(nome, number, "contatti");
2) dbcanc.cancellodadb(luca);

Potreste mica dirmi dove sbaglio

Grazie

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Ancora interagire con database sql
« Risposta #1 il: 28 Marzo 2013, 08:21:09 CET »
0
so che è mail fatto ma non ho mai usato il java, mi va in errore quando passa sulle seguenti righe:
1) dbcanc.inserisco(nome, number, "contatti");
2) dbcanc.cancellodadb(luca);

Potreste mica dirmi dove sbaglio

Per indagare sugli errori occorre il LogCat. Se ancora non lo hai mai usato dovresti familiarizzare un po' con lo strumento, analizzare le righe corrispondenti all'errore ed eventualmente posta pure le righe incriminate in questo thread per chiarire i dubbi.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline luca72

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nessuno
  • Sistema operativo:
    kubuntu 12.10
Re:Ancora interagire con database sql
« Risposta #2 il: 28 Marzo 2013, 11:10:42 CET »
0
Ciao lg cat mi dice questo:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.android.contacts/data/1 flg=0x1 }} to activity {com.help/com.help.MainActivity}: java.lang.NullPointerException

Questa è la classe che chiamo:
Codice (Java): [Seleziona]
public class Moddb {
                Cursor cursore;
               
                public void  inserisco(String nome, String numero, String nometabella, SQLiteDatabase db){
                        ContentValues cv = new ContentValues(2);
                        cv.put(Miodb.COLUMN_NOME, nome);
                        cv.put(Miodb.COLUMN_NUMERO, numero);
                        db.insert(Miodb.TABLE_NAME, null, cv);
                }
                public void cancellodadb(int posizione, SQLiteDatabase db){
                        cursore.moveToPosition(posizione);
                        String rowid = cursore.getString(0);
                        db.delete(Miodb.TABLE_NAME, "_id = ?", new String[]{rowid});
                }

        }

Questa è una parte della classe main
Codice (Java): [Seleziona]
ArrayList<String> listItems = new ArrayList<String>();
ArrayList<String> numeri = new ArrayList<String>();
ListView listacont;
ArrayAdapter<String> arrayAdapter;
final Context context = this;
AlertDialog.Builder alert;
int luca ;
SQLiteDatabase db;
Moddb modifico;

public void mettolista(String number, String nome){
                listacont = (ListView)findViewById(R.id.listView1);
                listItems.add(nome + " : " + number);
                arrayAdapter =  new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, listItems);
                listacont.setAdapter(arrayAdapter);
                modifico.inserisco(nome, number, "contatti", db); Qui genero l'errore