Вот как я это делаю. Все в одном месте, и вам просто нужно сделать объект MyDatabase и вызывать любой метод, который вы хотите, из вашего кода. Обязательно прочитайте об обновлении, вставке и удалении (специальные обернутые запросы). Вы также можете выполнять сырые SQL-команды. Надеюсь, что я не был запутанным;)
public class MyDatabase {
public static final String DB_NAME = "myname.db";
public static final int DB_VERSION = 1;
public static final String MY_TABLE = "my_table";
public static final String E_IDD = "idd";
public static final String E_FIELD1 = "f1";
public static final String E_FIELD2 = "f3";
public static final String E_FIELD3 = "f3";
Context context;
MyDbHelper dbHelper;
SQLiteDatabase db;
public MyDatabase(Context context) {
this.context = context;
dbHelper = new MyDbHelper();
}
public void insertSomeObject(Object obj) {
db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(E_IDD, obj.getId());
values.put(E_FIELD1, goal.getField1());
values.put(E_FIELD2, goal.getField2());
values.put(E_FIELD3, goal.getField3());
db.insertWithOnConflict(MY_TABLE, null, values,
SQLiteDatabase.CONFLICT_IGNORE);
}
public void deleteObject(int id) {
db = dbHelper.getWritableDatabase();
db.delete(MY_TABLE, E_IDD + "=?",new String[] {""+id });
}
public Object fromCursor(Cursor c) {
//carefull here to match the exact types you need for your object
Object obj = new Object(c.getInt(0), c.getInt(1), c.getString(2), c.getInt(3))
return obj;
}
public ArrayList<Object> query() {
ArrayList<Object> objArray = new ArrayList<Object>();
db = dbHelper.getReadableDatabase();
Cursor cursor = db.query(MY_TABLE, null, null, null, null, null,
null);
if (cursor.getCount() <= 0)
return null;
cursor.moveToFirst();
goalArray.add(fromCursor(cursor));
while (cursor.moveToNext()) {
objArray.add(fromCursor(cursor));
}
return objArray;
}
class MyDbHelper extends SQLiteOpenHelper {
public MyDbHelper() {
super(context, DB_NAME, null,
DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = String.format("create table %s "
+ "(%s int primary key, " + "%s int, " + "%s text, "
+ "%s int)",
MY_TABLE, E_IDD, E_FIELD1, E_FIELD2, E_FIELD3);
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop if exist " + MY_TABLE);
//or do something smarter
onCreate(db);
}
}
}
использовать пользовательские ContentProvider – pskink
, но я не хочу, чтобы обмениваться данными с другими приложениями. – null
Я знаю, сделайте его не экспортированным – pskink