¿Cómo ejecutar la consulta en la base de datos SQLite en android?

En mi administrador de base de datos SQLite puedo consultar esto:

SELECT SUM(odometer) as odometer FROM tripmileagetable where date like '2012-07%'; 

Esta consulta me devuelve la suma total de la columna del odómetro de la tabla llamada 'tripmileagetable' del mes de julio de 2012, pero quiero escribir este código en la consulta android.

Pero no puedo averiguar cómo establecer esta consulta en el método database.query (), puede cualquier ayuda?

 final Cursor cursor = db.rawQuery("SELECT SUM(odometer) as odometer FROM tripmileagetable where date like '2012-07%';", null); int sum = 0; if (cursor != null) { try { if (cursor.moveToFirst()) { sum = cursor.getInt(0); } } finally { cursor.close(); } } 

Depende de cómo planee acceder a la base de datos en Android. Usted puede intentar algo como:

 SQLiteDatabase db = this.getWritableDatabase(); String selectQuery = "select sum(odometer) as odometer from tripmileagetable where date like '2012-07%'"; Cursor cursor = db.rawQuery(selectQuery, null); 

Lo anterior se utilizaría si está utilizando una clase SQLiteOpenHelper.

Si ha creado el archivo de base de datos usted mismo, podría hacer algo como:

 SQLiteDatabase db = SQLiteDatabase.openDatabase("/data/data/com.package.name/databases/dbname.db", null, SQLiteDatabase.OPEN_READWRITE); String selectQuery = "select sum(odometer) as odometer from tripmileagetable where date like '2012-07%'"; Cursor cursor = db.rawQuery(selectQuery, null); 

Hacer algunas investigaciones sobre SQLiteDatase, Cursor y SQLiteOpenHelper.

Este ejemplo puede ayudarle a:

https://github.com/nraboy/Spyfi/blob/master/Android/src/com/nraboy/spyfi/DataSource.java

Puede utilizar el método rawQuery :

 Cursor c = database.rawQuery("SELECT SUM(odometer) as odometer FROM tripmileagetable where date like '2012-07%'", null); 

Su campo no es crear en su base de datos de la tabla, compruebe hacia fuera el campo en su tabla. Porque he visto ese problema en el mío. Utilizo el administrador de SQLite para ver mi base de datos.

O si no lo tiene, busque en su código fuente de crear base de datos. Asegúrese de que su código fuente es cierto, entonces usted puede eliminar su antigua base de datos en el explorador de archivos (utilizando eclipse quiero decir). Y se puede ejecutar de nuevo con la nueva base de datos.

Android soporta totalmente los DB de SQLite . Todos los DB que crees dentro de tu aplicación serán accesibles desde todas las clases de tus aplicaciones (NO fuera de tu aplicación).

En primer lugar, debe crear una clase Java que extienda SQLiteOpenHelper . Aquí, tiene que anular los métodos onCreate () y onUpdate () . Como se puede suponer, el primero se llama cuando se crea el DB, mientras que el último se llama cuando se modifica el DB.

 import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.content.Context; import android.database.Cursor; import android.content.ContentValues; /** * Class DatabaseHelper. */ public class DatabaseHelper extends SQLiteOpenHelper { //Database parameters: private static final String DATABASE_NAME = "dbname"; // the name of the DB! private static final int DATABASE_VERSION = 2; private static final String DATABASE_TABLE_NAME = "tripmileagetable"; // the name of the table! //Table attributes: private static final String DATABASE_TABLE_ATTR_ID = "id"; // attr1 private static final String DATABASE_TABLE_ATTR_ODOMETER = "odometer"; // attr2 private static final String DATABASE_TABLE_ATTR_DATE = "date"; // attr3 /** * Class constructor. * * @param context the context. */ DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String create = "CREATE TABLE " + DATABASE_TABLE_NAME + " (" + DATABASE_TABLE_ATTR_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + DATABASE_TABLE_ATTR_ODOMETER + " INTEGER, " + DATABASE_TABLE_ATTR_DATE + " TEXT);"; db.execSQL( create ); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_NAME); onCreate(db); } } 

Ahora, dentro de la nueva clase Java, puede crear métodos personalizados para consultar su base de datos.

Para escribir el DB debes usar getWritableDatabase () , mientras que para leerlo debes usar getReadableDatabase () . Ambos devuelven un objeto SQLiteDatabase y, finalmente, lanzan una excepción SQLiteException . En particular, para consultar su base de datos, hay dos métodos SQLiteDatabase disponibles: rawQuery y query (ambos devuelven un objeto Cursor ).

 /** * Get the sum of the odometer of a particular month and year. * * @param year the year. * @param month the month. * @return the sum of the odometer of the year and the month. */ public int sumOdometer(Integer year, Integer month) { //Date composition: String date = year.toString() + "-" + month.toString() + "%"; //SQL query: String query = "SELECT SUM(" + DATABASE_TABLE_ATTR_ODOMETER + ") AS " + DATABASE_TABLE_ATTR_ODOMETER + " FROM " + DATABASE_TABLE_NAME + " WHERE " + DATABASE_TABLE_ATTR_DATE + "LIKE ?"; //Execute the SQL query: SQLiteDatabase db = getReadableDatabase(); Cursor cursor = db.rawQuery(query, new String [] {date}); int sum = 0; if( cursor.moveToFirst() ) { // moves the cursor to the first row in the result set... sum = cursor.getInt( cursor.getColumnIndex(DATABASE_TABLE_ATTR_ODOMETER) ); } //Close the Cursor: cursor.close(); return sum; } 

Tenga en cuenta que SQLite pone automáticamente comillas simples (') alrededor de los argumentos (?).

Usted puede encontrar un buen tutorial aquí: http://www.codeproject.com/Articles/119293/Using-SQLite-Database-with-Android

  • Eliminar la base de datos sqlite al actualizar la nueva versión de la aplicación
  • Recuperar una lista de todas las tablas de la base de datos
  • ¿Cómo puedo restablecer un número de secuencia autoincrement en sqlite
  • Cómo obtener datos de Cursor en ContextMenu
  • SQLiteOpenHelper no puede llamar a onCreate?
  • Android DataBase está bloqueado por otro hilo
  • Android: onUpgrade no llama a la actualización de la base de datos
  • Error al abrir la base de datos / Error al cambiar la configuración regional de (base de datos) a 'en_US'
  • SQLite de Android Cursor fuera de límites de excepción en SELECT count (*) FROM table
  • Base de datos sqlite pre-relleno android
  • Notificaciones de la base de datos SQLite de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.