Come eseguire query nel database SQLite in android?

Nel mio database manager SQLite posso interrogare questo:

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

questa query restituisce la sum totale del colum odometro dalla tabella denominata tripmileagetable del mese di luglio 2012, ma voglio scrivere questo codice in query android.

  • Apri il PDF in un WebView
  • Android; Geocoder, perché ottengo "il servizio non è disponibile"?
  • Android NDK: Link utilizzando una libreria statica pre-compilata
  • Visualizzazione personalizzata Estensione del layout relativo
  • come rilevare la pressione lunga del button di volume in android
  • Imansible analizzare l'errore di risposta durante il caricamento di schermate sul gioco google (Android Market)
  • Ma non riesco a capire come stabilire questa query nel metodo database.query (), qualcuno può aiutarti?

  • Le chiamate audio Android usano il sorso di android
  • Registrazione audio in stereo fornendo dati identici nei canali sinistro e destro
  • Shoutcast streaming
  • Android, come scegliere salvare la posizione del file?
  • Studio Android java.exe finito con valore di output non zero
  • Come ignorare l'errore e continuare il stream infinito?
  • 5 Solutions collect form web for “Come eseguire query nel database SQLite in android?”

     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(); } } 

    Dipende da come si prevede di accedere al database in Android. Puoi provare qualcosa di simile:

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

    Quanto sopra verrà utilizzato se si utilizza una class SQLiteOpenHelper.

    Se hai creato il file di database da soli, puoi fare qualcosa di simile:

     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); 

    Eseguire alcune ricerche su SQLiteDatase, Cursore e SQLiteOpenHelper.

    Questo esempio potrebbe aiutare a:

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

    È ansible utilizzare il metodo rawQuery :

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

    il tuo field non è creato nella tua tabella Database, controlla il field nella tua Tabella. perché ho visto quel problema sul mio. Utilizzo SQLite Administrator per visualizzare il mio database.

    o se non lo hai fatto, guarda il tuo codice sorgente per creare il database. assicurati che il codice sorgente sia vero, quindi puoi eliminare il tuo vecchio database sull'esploratore di file (usando l'eclisse). e puoi eseguire nuovamente con il nuovo database.

    Android support completamente i DB SQLite . Tutti i DB creati all'interno della tua applicazione saranno accessibili da tutte le classi delle tue applicazioni (NON al di fuori dell'applicazione!).

    Prima di tutto, è necessario creare una class Java che estende SQLiteOpenHelper . Qui, è necessario ignorare i methods onCreate () e onUpdate () . Come si può supporre, il primo viene chiamato quando viene creato il DB, mentre quest'ultimo viene chiamato quando il DB viene modificato.

     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); } } 

    Ora, all'interno della nuova class Java, è ansible creare i methods personalizzati per richiedere il DB.

    Per scrivere il DB si dovrebbe usare getWritableDatabase () , mentre per leggerlo si dovrebbe usare getReadableDatabase () . Entrambe restituiscono un object SQLiteDatabase e infine lanciano un SQLiteException . In particolare, per interrogare il tuo DB, sono disponibili due methods SQLiteDatabase : rawQuery e query (entrambi restituiscono un object Cursore ).

     /** * 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; } 

    Si noti che SQLite mette automaticamente virgolette singole (') intorno agli argomenti (?).

    È ansible trovare un buon tutorial qui: http://www.codeproject.com/Articles/119293/Using-SQLite-Database-with-Android

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.