2010-12-18 61 views
2

我試圖在sqlite中的一個數據庫中創建兩個表,但只創建第一個表(sharelist)並且未創建第二個表(usedlist)。如何在一個數據庫中創建兩個表

請幫我...

公共類createSqliteHelper擴展SQLiteOpenHelper {

private DatabaseHelper DBHelper; 
public static final String KEY_ROWID = "sy_id"; 

    public static final String KEY_TITLE = "symbol"; 
    public static final String KEY_POSITION = "position";  
    private static final String TAG = "createSqliteHelper"; 


private static final String DATABASE_NAME="tradely.db"; 
private static final String DATABASE_TABLE = "sharelist"; 


    private static final String DATABASE_TABLE1 = "usedlist"; 

private static final int SCHEMA_VERSION=1; 

private DatabaseHelper DBHelper; 
    private SQLiteDatabase db; 



    private static final String DATABASE_CREATE=("CREATE TABLE IF NOT EXISTS sharelist (_id INTEGER PRIMARY KEY AUTOINCREMENT, category TEXT);"); 
    private static final String DATABASE_CREATE1=("CREATE TABLE IF NOT EXISTS usedlist(sy_id INTEGER PRIMARY KEY AUTOINCREMENT, symbol TEXT, position INTEGER, FOREIGN KEY (symbol) REFERENCES sharelist(_id);"); 






    public createSqliteHelper(Context context) { 

    super(context, DATABASE_NAME, null, SCHEMA_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 


    try { 


     db.execSQL(DATABASE_CREATE); 
     db.execSQL(DATABASE_CREATE1); 

    } 
    catch(SQLiteException e) { 
     Log.e("createerr",e.toString()); 
    } 

} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    android.util.Log.w("LunchList", "Upgrading database, which will destroy all old data"); 
    db.execSQL("DROP TABLE IF EXISTS sharelist"); 
    db.execSQL("DROP TABLE IF EXISTS usedlist"); 
    onCreate(db); 
} 
+0

你有一個logcat錯誤日誌嗎?它是否拋出任何異常? – st0le 2010-12-18 13:19:54

+0

是的。它拋出像「12-18 19:12:13.338:錯誤/ AndroidRuntime(930):引起:android.database.sqlite.SQLiteException:沒有這樣的表:usedlist:,編譯時:SELECT * FROM usedlist ORDER BY symbol」 – sri 2010-12-18 13:44:58

回答

7

你缺少一個)關閉第二CREATE TABLE聲明;因此,該表沒有被創建,你會得到該錯誤。

您有:

sharelist(_id); 

而且它必須是:

sharelist(_id)); 
0

這不是你的眼前問題,但你可能需要很快解決這個問題:你創建文本列在usedlist表中名爲symbol。我從列名中猜測,您打算將股票代碼存儲在該列中。但symbol被聲明爲引用sharelist表中名爲_id(INTEGER)的FOREIGN KEY。

它很可能是最好的移動symbolsharelist表,並在usedlist創建新列(比如說,share_id)來引用sharelist

相關問題