2012-10-30 44 views
0
public class ListsSQLiteOpenHelper extends SQLiteOpenHelper { 

public static final int VERSION = 1; 
public static final String DB_NAME = "lightsettings_db.sqlite"; 
public static final String ITEMS_TABLE = "light_setting_items"; 
public static final String ITEM_ID = "itemId"; 
public static final String ITEM_TYPE = "itemType"; 
public static final String ITEM_VALUE = "itemValues"; 
public static final String ITEM_BUSTYPE = "itemBustype"; 
public static final String ITEM_LIGHTTYPE = "itemLighttype"; 
public static final String ITEM_SELECT = "itemSelected"; 

public ListsSQLiteOpenHelper(Context context) { 
    super(context, DB_NAME, null, VERSION); 
    int i=0; 
    int y=i; 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    createTable(db); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

} 


protected void createTable(SQLiteDatabase db) { 
    db.execSQL(
      "create table " + ITEMS_TABLE +" (" + 
      ITEM_ID + " integer primary key autoincrement not null, " + 
      ITEM_TYPE + " text," + 
      ITEM_VALUE + " text," + 
      ITEM_BUSTYPE + " text," + 
      ITEM_LIGHTTYPE + " text," + 
      ITEM_SELECT + " text" + 
      ");" 
     ); 
} 
} 


public class EntryManagerApplication extends Application { 

private ArrayList<Entry> currentEntries; 

private long lineNumber = 1; 

private SQLiteDatabase database; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    ListsSQLiteOpenHelper helper = new ListsSQLiteOpenHelper(this); 
    database = helper.getWritableDatabase(); 
    if(currentEntries == null){ 
     loadItems(); 
    } 
} 

private void loadItems() { 
    currentEntries = new ArrayList<Entry>(); 

    Cursor itemsCursor = database.query(
      ITEMS_TABLE, 
      new String[] {ITEM_ID, ITEM_TYPE, ITEM_VALUE, ITEM_BUSTYPE, ITEM_LIGHTTYPE, ITEM_SELECT}, 
      null, null, null, null, String.format("%s,%s", ITEM_SELECT, ITEM_TYPE)); 

    itemsCursor.moveToFirst(); 
    Entry e; 
    if(!itemsCursor.isAfterLast()){ 
     do{ 
      long id = itemsCursor.getLong(0); 
      String type = itemsCursor.getString(1); 
      String values = itemsCursor.getString(2); 
      String bustype = itemsCursor.getString(3); 
      String lighttype = itemsCursor.getString(4); 
      String boolvalue = itemsCursor.getString(5); 
      boolean select = Boolean.parseBoolean(boolvalue); 
      e = new Entry(id, type, values, bustype, lighttype); 
      e.setRowId(id); 
      e.setSelected(select); 
      currentEntries.add(e); 
     } while(itemsCursor.moveToNext()); 
    } 

    itemsCursor.close(); 
} 

public void setCurrentEntries(ArrayList<Entry> currentEntries){ 
    this.currentEntries = currentEntries; 
} 

public ArrayList<Entry> getCurrentEntries(){ 
    return currentEntries; 
} 

public void addEntry(Entry e){ 
    assert(e!= null); 
    currentEntries.add(e); 
} 

public long getLineNumber() { 
    return lineNumber; 
} 

public void setLineNumber(long lineNumber) { 
    this.lineNumber = lineNumber; 
} 
} 

當我嘗試運行此代碼我得到一個錯誤我沒有任何想法請幫助。SQLiteException:沒有這樣的列itemId:,而編譯時:

android.database.sqlite.SQLiteException:沒有這樣的列:ITEMID:,在編譯:選擇的itemId,項目類型,itemValues,itemBustype,itemLighttype,itemSelected FROM light_setting_items ORDER BY itemSelected,ITEMTYPE

回答

2

CREATE TABLE命令沒有工作,因爲 在關閉前有一個逗號)

此外,SQLiteOpenHelper不會調用您的onCreate方法爲現有的數據庫;您將不得不增加VERSION並在onUpdate方法中進行必要的更改。 或者,刪除並重新安裝您的應用程序。

+0

我刪除它,但仍然無法正常工作 – mystery

+0

非常感謝;我刪除並重新安裝了應用程序,它運行 – mystery

相關問題