Android SQLite DBs. , , ( !).
, Java, SQLiteOpenHelper. onCreate() onUpdate(). , , , .
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.Context;
import android.database.Cursor;
import android.content.ContentValues;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "dbname";
private static final int DATABASE_VERSION = 2;
private static final String DATABASE_TABLE_NAME = "tripmileagetable";
private static final String DATABASE_TABLE_ATTR_ID = "id";
private static final String DATABASE_TABLE_ATTR_ODOMETER = "odometer";
private static final String DATABASE_TABLE_ATTR_DATE = "date";
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);
}
}
, Java, .
To write a database, you must use getWritableDatabase (), and to read it you must use getReadableDatabase (). Both of them return an SQLiteDatabase object and ultimately throw a SQLiteException. In particular, two SQLiteDatabase methods are available for querying your database: rawQuery and query (both return a Cursor object).
public int sumOdometer(Integer year, Integer month) {
String date = year.toString() + "-" + month.toString() + "%";
String query = "SELECT SUM(" + DATABASE_TABLE_ATTR_ODOMETER + ") AS " + DATABASE_TABLE_ATTR_ODOMETER +
" FROM " + DATABASE_TABLE_NAME +
" WHERE " + DATABASE_TABLE_ATTR_DATE + "LIKE ?";
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery(query, new String [] {date});
int sum = 0;
if( cursor.moveToFirst() ) {
sum = cursor.getInt( cursor.getColumnIndex(DATABASE_TABLE_ATTR_ODOMETER) );
}
cursor.close();
return sum;
}
Note that SQLite automatically puts single quotes (') around arguments (?).
You can find a good tutorial here: http://www.codeproject.com/Articles/119293/Using-SQLite-Database-with-Android
source
share