Autore Topic: Permessi per scrivere sul database esterno!!  (Letto 390 volte)

Offline alex93

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy s2
  • Sistema operativo:
    Windows 8
Permessi per scrivere sul database esterno!!
« il: 06 Maggio 2013, 13:23:44 CEST »
0
Scusate se vi scrivo sempre ma gli esami sono quasi arrivati e ho poco tempo(inoltre i miei professori non capiscono nente di android). COmunque credo di avere un problema di scrittura data sul database esterno!! In teoria dovrei salvarmi 2 cose l'id dello studente e il giorno in cui è assente, il codice viene eseguito ma suld atabase non mi scrive niente!! Utilizzo wamp per simulare il server! Il mio dubbio è: devo utilizzare un asynctask?? io lho gia usato nella mia activity x connettermi al database e visualizzare i dati in una list view!!




Post unito: 06 Maggio 2013, 13:57:55 CEST
quasi dimenticavo logcat(non mida errori ma warning)+codice:
Codice: [Seleziona]
05-06 11:52:16.888: W/System.err(1444): java.lang.NullPointerException
05-06 11:52:16.888: W/System.err(1444):         at com.example.tesi.Studente$Scrittura.doInBackground(Studente.java:173)
05-06 11:52:16.908: W/System.err(1444):         at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-06 11:52:16.928: W/System.err(1444):         at java.util.concurrent.FutureTask.run(FutureTask.java:234)
05-06 11:52:16.928: W/System.err(1444):         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
05-06 11:52:16.928: W/System.err(1444):         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
05-06 11:52:16.928: W/System.err(1444):         at java.lang.Thread.run(Thread.java:856)


Codice (Java): [Seleziona]
package com.example.tesi;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;





import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;

public class Studente extends Activity {
        final Context context = this;
        CustomAdapter1 adapter;
         ListView listView;
         String ids;
        ArrayList<Stud> list1 = new ArrayList<Stud>();
        private static final String url = "jdbc:mysql://10.0.2.2:3306/tesina";
    private static final String user = "root";
    private static final String pass = "";
    Connection con;
    Statement st;
   
    private ProgressDialog progressDialog;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listas);
       
       
        new Connessione().execute();
       
        listView = (ListView)findViewById(R.id.lista1);
       
        Button Invia=(Button) findViewById(R.id.btnInvia);
        Invia.setOnClickListener(new View.OnClickListener() {
                 
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
             
                 new Scrittura().execute();

           
            }
        });
       
        Button indietro=(Button) findViewById(R.id.btnIndietro);
        indietro.setOnClickListener(new View.OnClickListener() {
                 
                public void onClick(View arg0) {
                         
                        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);

                        // set title
                        alertDialogBuilder.setTitle("Attenzione!!");

                        // set dialog message
                        alertDialogBuilder
                                .setMessage("Desideri uscire senza salvare gli assenti nel database?")
                                .setCancelable(false)
                                .setPositiveButton("si",new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog,int id) {
                                               
                                                  Intent ind = new Intent(getApplicationContext(), lista.class);
                                        ind.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                        startActivity(ind);
                                        finish();
                                        }
                                  })
                                .setNegativeButton("No",new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog,int id) {
                                               
                                                dialog.cancel();
                                        }
                                });

                                // create alert dialog
                                AlertDialog alertDialog = alertDialogBuilder.create();

                                // show it
                                alertDialog.show();
                        }
                });

               
           
    }
       
   
   
   
   
    private class Connessione extends AsyncTask<Object, Integer, Void> {
               
            @Override
            protected Void doInBackground(Object... arg0) {
                 Bundle extras=getIntent().getExtras();
                 ids=extras.getString("id");
                try {
                       
            Class.forName("com.mysql.jdbc.Driver");
             con = DriverManager.getConnection(url, user, pass);
            String result = "Database connection success\n";
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select * from studenti where idc='"+ids+"'");
         
           
           
            while(rs.next()) {
               
               
                 list1.add(new Stud(rs.getString(1),rs.getString(3),rs.getString(4),false));
                 
            }
           
               
         
           
   
         
        }
        catch(Exception e) {
            e.printStackTrace();
           
        }
        return null;
            }
            protected void onProgressUpdate(Integer... values) {
               
            }

         
            protected void onPostExecute(Void result) {
                   CustomAdapter1 adapter = new CustomAdapter1(Studente.this, R.layout.riga1, list1);
                   listView.setAdapter(adapter);
            }  
     
        }

 private class Scrittura extends AsyncTask {
       
        @Override
        protected Object doInBackground(Object... arg1)
        {
               
         Intent prel = new Intent(getApplicationContext(),lista.class);
         prel.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
         for(int i=0;i<list1.size();i++)
         {
              Stud s = list1.get(i);
             if(s.getCheck())
             {
               
                 String idm=s.getMat();
                 try
                 {
             
               
                st.executeUpdate("INSERT INTO assenza (id,matricola,data) values('1','2','02/10/2012')");
                 }
                 catch(Exception e) {
                     e.printStackTrace();
                     
                 }  
             }
          }
         
          startActivity(prel);
          finish();
               
        return null;
        }
     
    }
}

Post unito: 06 Maggio 2013, 14:14:07 CEST
come non detto risolto tutto!!! ultima domanda: sapete per caso come inserire la data corrente nel database??? nel mio database ho il campo timestap con l'attributo che dovrebbe scrivere la data in automatico ma non funziona!!
« Ultima modifica: 06 Maggio 2013, 14:14:07 CEST da alex93, Reason: Merged DoublePost »