Mostrando entradas con la etiqueta Android. Mostrar todas las entradas
Mostrando entradas con la etiqueta Android. Mostrar todas las entradas

miércoles, 4 de diciembre de 2013

Cómo realizar consultar a SQLite en Android

En el post anterior os enseñe cómo crear una BD SQLlite en Android, bien pues en este post os voy a enseñar como realizar consultas.

Ya sabéis que quien se sepa manejar con cualquier lenguaje de Base de Datos, os resultara realmente fácil.

Para realizar consultas os seran necesarias estos 2 imports:

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

Una vex tengamos el proyecto creador con la clase BDHelper del post anterior, en la MainActivity podremos recuperar todos los datos de una tabla de la siguiente manera:


 
public DBHelper dbh;  
public SQLiteDatabase db; 

 
dbh = new DBHelper(this,"BD");  
db = dbh.getReadableDatabase();  

Cursor c1 = db.rawQuery("select * from table", null);  
 while(c1.moveToNext()){  
      Log.d("APP", ">" + c1.getInt(c1.getColumnIndex("column1")));  
      Log.d("APP",">" + c1.getInt(c1.getColumnIndex("column2")));  
      Log.d("APP",">" + c1.getString(c1.getColumnIndex("column3")));  
 }  

Primero tendremos que crear los objectos que nos abran la conexion a la base de datos: dbh y db. Es muy sencillo.

Luego, en un objecto Cursor le asignaremos la query a partir del metodo que nos ofrece db.rawQuery().

Y por ultimo, solo tendremos que recorrer el Cursor con la sencilla instrucción moveToNext().

Y con este sencillo bucle recuperaremos toda la info de una tabla.

Cómo crear la Base de Datos SQLite de Android

En este post os voy a enseñar cómo empezar a usar la base de datos interna de android SQLite.
Ya no explico que antes de todo crear la MainActivity ya que al crear un nuevo proyecto es automático.
Primero de todo tendremos que crear la base de datos, para ello necesitamos una clase que extienda de SQLiteOpenHelper, que es la clase que nos dará servicio a SQLite. El metodo onCreate se lanzara siempre y cuando la BD no este creada, y el onUpgrade si os digo al verdad no lo he utilizado aun.  Como veis el script que incorpora el execSQL, es muy sencillo, no hay nada de nuevo con SQL.
 public class DBHelper extends SQLiteOpenHelper{  
 public DBHelper(Context context, String name) {  
  super(context, name, null, 1);  
  // TODO Auto-generated constructor stub  
  }  
 @Override  
  public void onCreate(SQLiteDatabase db) {  
  // TODO Auto-generated method stub  
  try {  
  // Creación directa de una tabla  
  db.execSQL("CREATE TABLE ejemplo( "+  
  "id INTEGER PRIMARY KEY AUTOINCREMENT, "+  
  "campo1 INTEGER, "+  
  "campo2 INTEGER,"+  
  "campo3 TEXT" +  
  ");" );  
  }  
  catch(Exception e){  
 //TODO capturar error.  
  }  
  }  
 @Override  
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  // TODO Auto-generated method stub  
  db.execSQL("DROP TABLE IF EXISTS ejemplo");  
  // Cridem a la creació  
  onCreate(db);  
  }  
 }  

Y por ultimo (si en solo 2 pasos lo tendréis), en nuestra activity solo tendremos que crear un objeto BDHelper para que nos cree la BD si aun no la tenemos creada y con el objeto SQLiteDatabase ya podremos empezar a manipular la BD, pero eso os lo enseñare en otro post.


 public DBHelper dbh;  
 public SQLiteDatabase db;  
 dbh = new DBHelper(this,"BD");  
 db = dbh.getReadableDatabase();  

Como veis en el código de arriba, necesitamos crear un objeto DBHelper pasando el context y el nombre de la conexión. Y con este objecto creamos el objeto SQLiteDatabase para poder manipular la BD. Yo lo he declarado en el onCreate de la MainActivity.

Espero que os sirva, Saludos.

Cómo crear un servicio en Android

En este post os voy a explicar cómo crear un servicio desde una aplicación Android.

Primero de todo veremos lo que es un servicio: Un servicio es un componente de una aplicación para realizar una operación más larga en funcionamiento mientras no se interactua con el usuario, o de proporcionar funcionalidad a otras aplicaciones a utilizar. Decir también que un servicio no es un hilo y no es un procesos que pueda correr separado de la aplicación.

Primero de todo crearemos la actividad principal en la cual llamaremos a nuestro servicio.
  
 public class MainActivity extends Activity {  
  @Override  
  protected void onCreate(Bundle savedInstanceState) {  
  super.onCreate(savedInstanceState);  
  setContentView(R.layout.activity_main);  
  }  
  @Override  
  protected void onDestroy() {  
  // TODO Auto-generated method stub  
  super.onDestroy();  
  }  
 }   

Después creamos otra clase que llamaremos FirstService.java.
 public class FirstService extends Service {  
 @Override  
 public IBinder onBind(Intent intent) {  
 // TODO Auto-generated method stub  
 return null;  
 }  
 @Override  
 public int onStartCommand(Intent intent, int flags, int startId) {  
 // TODO Auto-generated method stub  
 return super.onStartCommand(intent, flags, startId);  
 }  
 @Override  
 public void onDestroy() {  
 // TODO Auto-generated method stub  
 super.onDestroy();  
 }  
 }  

Ahora, desde la MainActivity, ya podremos llamar a FirstServices mediante un botón. Así que primero de todo se tendrá que añadir un botón en el layout. Ya que estamos, llamaremos al servicio pasando unos parámetros como ejemplo.
 @Override  
  protected void onCreate(Bundle savedInstanceState) {  
  super.onCreate(savedInstanceState);  
  setContentView(R.layout.activity_main);  
  Button test = (Button)findViewById(R.id.StartButton);  
  test.setOnClickListener(new OnClickListener() {  
  @Override  
  public void onClick(View v) {  
   // TODO Auto-generated method stub  
   Intent intent = new Intent(MainActivity.this, FirstService.class);  
   Bundle bundle = new Bundle();  
   bundle.putInt("Param1","2");  
   bundle.putInt("Param2", "2");  
   intent.putExtras(bundle);  
   startService(intent);  
   }  
  });  
  }  
  @Override  
  protected void onDestroy() {  
  // TODO Auto-generated method stub  
  super.onDestroy();  
  }  
 }  

Desde FirstServices recogeremos los parámetros enviados. Os pongo solo el método para no tener que re-copiar la clase FirstServices.java. Acordaros de recoger los parámetros con el mismo nombre que al llamar el servicio en el MainActivity.
 @Override  
  public int onStartCommand(Intent intent, int flags, int startId) {  
 // TODO Auto-generated method stub  
 Bundle b = intent.getExtras();  
 int i= b.getInt("Param1");  
 int j = b.getInt("Param2");  
 return super.onStartCommand(intent, flags, startId);  
 }  

Y por ultimo, tendremos que añadir al Manifest.xml el servicio para que lo reconozca.
 <application  
 android:allowBackup="true"  
 android:icon="@drawable/ic_launcher"  
 android:label="@string/app_name"  
 android:theme="@style/AppTheme" >  
 <activity  
 android:name="com.silencetime.MainActivity"  
 android:label="@string/app_name"  
 android:screenOrientation="portrait">  
 <intent-filter>  
 <action android:name="android.intent.action.MAIN" />  
 <category android:name="android.intent.category.LAUNCHER" />  
 </intent-filter>  
 </activity>  
 <service android:name=".FirstService" ></service>  
  </application>  

Y con esto ya podremos crear nuestro primer servicio. No os he puesto los imports ya que te los importa automaticamente. Espero que os ayude.