2010-12-18 6 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

로그캣 오류 로그가 있습니까? 예외가 발생 했습니까? – st0le

+0

예. "12-18 19 : 12 : 13.338 : ERROR/AndroidRuntime (930) : android.database.sqlite.SQLiteException : 해당 테이블이 없음 : usedlist :, 컴파일 중 : SELECT * FROM usedlist ORDER BY symbol" – sri

답변

7

두 번째 CREATE TABLE 문을 닫을 수 ) 누락; 따라서 테이블이 작성되지 않고 그 오류가 발생합니다.

sharelist(_id); 

그리고 그것은해야합니다 :

당신은이

sharelist(_id)); 
0

이 즉각적인 문제가되지 않습니다,하지만 당신은 곧이 문제를 해결해야 할 수 있습니다 : 당신은 TEXT 열을 만드는 usedlist 테이블에 symbol이라는 이름이 지정됩니다. 나는 컬럼 이름에서 그 컬럼에 주식 기호를 저장할 것을 계획하고 있다고 생각합니다. 그러나 symbol은 테이블에 INTEGER 인 _id 열을 참조하는 FOREIGN KEY로 선언됩니다.

아마 sharelist를 참조하는 (말하자면 share_id을)를 sharelist 테이블에 symbol를 이동하고 usedlist에 새 열을 생성하는 가장 좋은 것입니다.

관련 문제