안드로이드에서 응용 프로그램을 작성하고 SQlite 데이터베이스를 사용하여 메신저. 사용자 선택에 따라 표에 열을 추가하고 싶습니다. 그래서 사용자는 테이블에 원하는 열을 추가 할 수 있습니다. 예를 들어 사용자는 "동물"표를 가지고 있으며 "개", "고양이"및 "물고기"에 대한 열을 추가하려고합니다.안드로이드 SQLite 데이터베이스를 사용하여 동적 열을 만드는 방법
나는 몇 가지 해결책에 대해 읽었으며 나에게 도움이되는 것을 보지 못했습니다. 나는 열을 추가 할 수있는 간단한 방법을 사용하고 있음을 읽어
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// If you need to add a column
if (newVersion > oldVersion) {
db.execSQL("ALTER TABLE " + TableName + " ADD COLUMN " + ColumnName);
}
}
하지만 사용자의 choise하여 테이블에 추가 될 컬럼의 이름이 무엇인지 선택 기운이 내 문제를,이 문자열에 대한 매개 변수가 없습니다. 그래서 나는 이것과 같은 것을 사용하고 직접 호출하려고 시도했다.
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion, String newColumnName) {
// If you need to add a column
if (newVersion > oldVersion) {
db.execSQL("ALTER TABLE " + TableName + " ADD COLUMN " + newColumnName);
}
}
그러나이 방법으로 오류가 발생했습니다.
데이터베이스 버전에 대한 다른 질문이 있습니다. onUpgrade 메서드는 onCreate가 호출 될 때 자동으로 호출됩니다. onUpgrade에는 데이터베이스 버전에 대한 oldVersion 및 newVersion 매개 변수가 있습니다. 언제 oldVersion 및 newVersion 매개 변수를 설정합니까? newVersion 매개 변수를 2,3,4 ...로 설정하는 방법은 무엇입니까?
은 데이터베이스 디자인이 좋지 않은 것 같습니다. 당신은 같은 것을 달성하기 위해 관계를 사용할 수 없다고 확신합니까? – Gustek
@Gustek 대답 해 주셔서 감사합니다. 관계가 무엇을 의미합니까? 더 많은 테이블을 열려면? 하지만 그때 나는 같은 문제가 있습니다. 내 테이블 번호는 내가 처음 설정 한 번호로 제한되기 때문에. 그리고 내 사용자가 "버드"테이블을 추가하고 싶다면 그것을 할 수있는 방법이 없습니다. – tomer
왜 열이어야하고 다른 테이블의 행이 아니며 many to many 관계가되어야합니까? 저장하려고하는 데이터 구조 란 무엇입니까? – Gustek