2015-11-04 87 views
0

我在表account中添加了一列(description)。我也讀this guild升級我的數據庫。但是,我有一點是什麼getHelper()方法在此代碼混淆:與升級ORMLite模式相混淆

Dao<Account, Integer> dao = getHelper().getAccountDao(); 
// change the table to add a new column named "description" 
dao.executeRaw("ALTER TABLE `account` ADD COLUMN description INTEGER;"); 

和它是在哪裏來的呢?我沒有看到getHelper()在我的DatabaseHelper類中聲明。有人能幫我嗎?

回答

0

你應該有擴展OrmLiteSqliteOpenHelper一類,你創建表(在onCreate),並對其進行更新(在onUpgrade):

public class DatabaseHelper extends OrmLiteSqliteOpenHelper { 

    public DatabaseHelper(Context context) { 
     super(context, "database.db", null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { 
     try { 
      TableUtils.createTable(connectionSource, Account.class); 
     } catch (SQLException e) { 
      throw new RuntimeException("Error when create database tables", e); 
     } 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) { 
     database.execSQL("ALTER TABLE `account` ADD COLUMN description INTEGER;"); 

     //same as: 
     //AccountDAO dao = getDao(Acount.class); 
     //dao.executeRaw("ALTER TABLE 'account' ADD COLUMN description INTEGER;"); 
    } 
} 

OrmLiteBaseListActivityOrmLiteBaseServiceOrmLiteBaseTabActivity提供一種方法getHelper訪問 數據庫助手在需要時會自動在onCreate()方法中創建 幫助程序,並在onDestroy() 方法中釋放它。

此外,如果使用的是超階級的,你應該有這樣的事情:

public class MyACtivity extends OrmLiteBaseActivity<DatabaseHelper> { 

    //In this class, you can call getHelper() to obtain the DatabaseHelper instance 

} 
+0

謝謝您的詳細解答,從你的代碼'database.execSQL(「ALTER TABLE‘帳戶’ ADD COLUMN description INTEGER;「);'等於'Dao dao = getHelper()。getAccountDao(); //改變表格添加一個名爲「description」的新列 dao.executeRaw(「ALTER TABLE'account'ADD COLUMN description INTEGER;」);'? – DinhNgocHien

+0

是的,它是一樣的。 –

+0

我編輯了aswer。現在,您可以看到如何在DatabaseHelper類中獲取dao。 –