2015-10-05 88 views
0

我在我的應用程序中首次使用ORMlite數據庫。我參考了一個教程,但不是做所有的事情完全一樣,我無法解決一個錯誤。我的代碼如下: -使用orm創建數據庫

DatabaseHelper:

public class DatabaseHelper extends OrmLiteSqliteOpenHelper { 

    private static final String DATABASE_NAME = "qzeodemo.db"; 
    private static final int DATABASE_VERSION = 1; 


    private Dao<ModifierDetails, Integer> itemsDao; 
    private Dao<ItemDetails, Integer> modifiersDao; 

    public DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION, R.raw.ormlite_config); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase sqliteDatabase, ConnectionSource connectionSource) { 
     try { 

      // Create tables. This onCreate() method will be invoked only once of the application life time i.e. the first time when the application starts. 
      TableUtils.createTable(connectionSource,ItemDetails.class); 
      TableUtils.createTable(connectionSource,ModifierDetails.class); 

     } catch (SQLException e) { 
      Log.e(DatabaseHelper.class.getName(), "Unable to create datbases", e); 
     } 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase sqliteDatabase, ConnectionSource connectionSource, int oldVer, int newVer) { 
     try { 

      // In case of change in database of next version of application, please increase the value of DATABASE_VERSION variable, then this method will be invoked 
      //automatically. Developer needs to handle the upgrade logic here, i.e. create a new table or a new column to an existing table, take the backups of the 
      // existing database etc. 

      TableUtils.dropTable(connectionSource, ItemDetails.class, true); 
      TableUtils.dropTable(connectionSource, ModifierDetails.class, true); 
      onCreate(sqliteDatabase, connectionSource); 

     } catch (SQLException e) { 
      Log.e(DatabaseHelper.class.getName(), "Unable to upgrade database from version " + oldVer + " to new " 
        + newVer, e); 
     } 
    } 

    // Create the getDao methods of all database tables to access those from android code. 
    // Insert, delete, read, update everything will be happened through DAOs 

    public Dao<ItemDetails,Integer> getItemDao() throws SQLException { 
     if (itemsDao == null) { 

     itemsDao = getDao(ItemDetails.class); 
     } 
     return itemsDao; 
    } 

    public Dao<ModifierDetails, Integer> getMofifierDao() throws SQLException { 
     if (modifiersDao == null) { 
      modifiersDao = getDao(ModifierDetails.class); 
     } 
     return modifiersDao; 
    } 
} 

其中我使用modifiersDao = getDao(ModifierDetails.class)的線;給出錯誤

錯誤:(76,30)錯誤:D的無效推斷類型;推斷的類型不符合聲明的綁定 推斷:Dao 界限:Dao 其中D,T是類型變量: D擴展在方法getDao中聲明的Dao(Class) T擴展在方法中聲明的對象getDao(類)

請幫助:(

回答

1

你的聲明是錯誤的上面:

私人島< ItemDetails,整數> modifiersDao;

但getMofifierDao()R eturns Dao < ModifierDetails,整數>

+0

嘿謝謝亞爾..我不能相信我做了這麼大的錯誤,這也是一個s2pd ...可能是它的ORM恐懼症或我必須休息..:D –

+0

有時候最好放鬆一下,然後回到代碼中。 – AndroidEnthusiast