База данных вызовов для SQLite на Android - PullRequest
1 голос
/ 27 марта 2012

Я создаю приложение для Android, которое требует от меня вызова в разных классах.я настроил свою базу данных следующим образом:

public class DataBaseHelper {

private static final String DATABASE_NAME = "example.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "table1";

private Context context;
private SQLiteDatabase db;

private SQLiteStatement insertStmt;
private static final String INSERT = "insert into "+ TABLE_NAME + "(name) values   (?)";

    public DataBaseHelper(Context context) {
       this.context = context;
       OpenHelper openHelper = new OpenHelper(this.context);
       this.db = openHelper.getWritableDatabase();
       this.insertStmt = this.db.compileStatement(INSERT);
    }

    public long insert(String name) {
       this.insertStmt.bindString(1, name);
       return this.insertStmt.executeInsert();
    }

    public void deleteAll() {
       this.db.delete(TABLE_NAME, null, null);
    }

    public List<String> selectAll() {
      List<String> list = new ArrayList<String>();
      Cursor cursor = this.db.query(TABLE_NAME, new String[] { "name" },
      null, null, null, null, "name desc");
      if (cursor.moveToFirst()) {
      do {
        list.add(cursor.getString(0));
      } while (cursor.moveToNext());
     }
     if (cursor != null && !cursor.isClosed()) {
      cursor.close();
     }
     return list;
   }

   private static class OpenHelper extends SQLiteOpenHelper {

      OpenHelper(Context context) {
      super(context, DATABASE_NAME, null, DATABASE_VERSION);
   }

   @Override
   public void onCreate(SQLiteDatabase db) {
      db.execSQL("CREATE TABLE " + TABLE_NAME + "(id INTEGER PRIMARY KEY, name TEXT)");
   }

   @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
     Log.w("Example", "Upgrading database, this will drop tables and recreate.");
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
     onCreate(db);
   }
  }
}

, если бы я назвал это в другом классе, как бы я это сделал?и нужно ли мне менять этот класс?

Ответы [ 2 ]

1 голос
/ 27 марта 2012

это просто, просто создайте объект класса БД и используйте этот метод, как.

DataBaseHelper db=new DataBaseHelper(this) ;
db.insert("HellooAndroid");
db.deleteAll();

См. Эту ссылку для получения дополнительной ссылки:

Как написать повторно используемый код для базы данных в Android

0 голосов
/ 27 марта 2012

Я бы сказал, что: создайте класс, расширяющий Application.Создайте синглтон для сохранения контекста приложения.Затем отредактируйте свой класс базы данных и замените свой контекст тем, который есть в приложении.

Вот пример того, что я хочу сказать:

public class MyApplication extends Application
{
    private static MyApplication instance = null;

    public MyApplication()
    {
        instance = this;
    }

    /**
     * Instanciates the class and initializes the variables
     *
     */
    @Override
    public void onCreate()
    {
        super.onCreate();
        instance = this;
    }

    /**
     * Creates a singleton of the current class
     *
     * @return Returns the app's context
     */
    public static Context getInstance()
    {
        if (instance == null) instance = new MyApplication();

        return instance;
    }
}

Тогда, когда вам нужно приложениеконтекст (не контекст активности!), вы можете вызвать MyApplication.gesInstance ()

Затем, когда вам нужно вставить запись в вашу базу данных, просто позвоните:

DataBaseHelper db_h = new DataBaseHelper() ;
db_h.insert(AnObject);
db_h.deleteAll();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...