2012-06-20 3 views
0

내 응용 프로그램이 동일한 전화에서 한 명 이상의 사용자를 가질 수 있으며 각 사용자가 자신의 "ApplicationFriends"mysqlite 테이블을 갖기를 원합니다. 테이블의 이름이 "ApplicationFriends"인 경우 모든 것이 효과적입니다. 하지만 2345가 uniqe 사용자 번호 일 때이 "ApplicationFriends2345"와 같은 테이블 이름을 설정하려고 할 때 테이블이 존재하지 않는다고 말하는 선택 쿼리를 실행할 때 항상 오류가 발생합니다.android sqlite 테이블 이름

이 내 테이블 작성 코드 : 데이터베이스가 생성 될 때

public DatabaseManager(Context context, String id) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    DatabaseManager.TABLE_APPLICATION_FRIENDS = TABLE_APPLICATION_FRIENDS_BASE + id; 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    String CREATE_APPLICATIN_FRIENDS_TABLE = "CREATE TABLE IF NOT EXISTS " 
      + TABLE_APPLICATION_FRIENDS + " (" + APPLICATION_FRIENDS_KEY_ID 
      + " INTEGER PRIMARY KEY," + APPLICATION_FRIENDS_KEY_NAME 
      + " TEXT" + ")"; 
    String CREATE_CHAT_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_Chat 
      + " (" + CHAT_KEY_SENDER_ID + " INTEGER," + CHAT_KEY_MESSAGE 
      + " TEXT," + CHAT_KEY_TIME + " DateTime" + ")"; 

    db.execSQL(CREATE_APPLICATIN_FRIENDS_TABLE); 
    db.execSQL(CREATE_CHAT_TABLE); 
} 

답변

0

각 사용자별로 테이블을 사용하여 수행 할 수 있습니다. 테이블 생성 코드를 dbhelkper 클래스의 onCreate이 아닌 메소드로 이동 한 다음 필요한 경우 (새 사용자를 추가 할 때) 호출하면됩니다.

public void createFriendTable(String friendID) { 
    String CREATE_FRIEND_TABLE = "CREATE TABLE IF NOT EXISTS " 
      + friendID + " (" + APPLICATION_FRIENDS_KEY_ID 
      + " INTEGER PRIMARY KEY," + APPLICATION_FRIENDS_KEY_NAME 
      + " TEXT" + ")"; 
    db.execSQL(CREATE_FRIEND_TABLE); 
} 

그럼 당신이 그것을 필요로 할 때마다 :

mDbHelper.createFriendTable(friendID); 

이이 사용자를 제거 훨씬 쉽게하는 것처럼 내가 할 것 인 것이다. 테이블을 떨어 뜨릴뿐입니다.

+0

실제로 새로운 메소드를 사용하지 않는다는 것을 알았습니다. onOpen 메소드를 구현하고 오버라이드해야합니다. –

4

SQLiteOpenHelper.onCreate (의 SQLiteDatabase)를 한 번만 호출됩니다. http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html을 참조하십시오.

"Application Friends"테이블을 하나만 사용하는 것이 좋습니다. 표에 Id를 저장하는 UserId라는 열을 추가합니다. 그런 다음 테이블에 쿼리를 작성하면 UserId = '2345'가 포함됩니다. 예를 들면 다음과 같습니다. db.rawQuery ("ApplicationFriends에서 select * userID = '2345'", null). 이렇게하면 id = "2345"인 사용자의 모든 데이터가 반환됩니다.