2012-08-22 4 views
1

다른 열이있는 테이블 "Items"가 있지만 각 열에 이름을 지정하지 않았습니다. 이제이 테이블에 다른 행이 있는데 실행하고 싶습니다.열 이름을 변경 하시겠습니까?

ItemsDao.queryBuilder().where().eq(Items.NAME, "computer").query(); 

그러나 내 열에는 이름이 없습니다. "alter table"으로 테이블을 업데이트하려고했지만 작동하지 않습니다.

AnyBody는 내 정보를 잃어 버리지 않고 내 칼럼의 이름을 어떻게 추가 할 수 있는지 알고 있습니까? 데이터베이스를 변경하려면

당신이해야 당신의 SQLiteOpenHelper, 당신

+1

소리 치지 마십시오. =) –

+0

@J. 스틴. 승인. 미안 해요, 다음 번에 알아요. – MARM

답변

2

편집 :

죄송합니다, 지금은 질문을 이해합니다. 각 입력란에 columnName = "..."을 지정하지 않았으므로 지금은 QueryBuilder에 문제가있는 것입니다.

QueryBuilder이 작동하는 데는 이 필요하지 않습니다. 필드로 돌아가서 기존 스키마와 일치하는 columnName 정적을 추가 할 수 있어야합니다. 예를 들어 데이터베이스의 필드가 "items" 인 경우 Java 필드에 columnName = "items"을 추가하기 만하면됩니다. Sqlite는 열 이름과 관련하여 대소 문자를 구분하지 않는다고 생각합니다.하지만 대소 문자를 구분하는 것이 좋습니다.

그러나 columnName은 필요하지 않습니다. 당신이 당신의 스키마와 당신이 QueryBuilder에서 점점 예외를 표시하도록 질문을 편집하는 경우

itemsDao.queryBuilder().where().eq("items", "computer").query(); 

, 나는 더 많은 응답 할 수 있습니다 : 데이터베이스에서 당신 필드 이름이 "items" 인 경우에 당신은 할 수 있어야 구체적으로.


은 당신이 할 수있을 것으로 판단 :

dao.executeRaw("ALTER TABLE `items` ADD COLUMN name VARCHAR;"); 

당신을 위해 작동하지 않습니다?안드로이드에서 스키마 업데이트에 대한 ORMLite 문서의 부분이 있습니다 :

http://ormlite.com/docs/upgrade-schema

가에 당신은 당신이 스키마 변경을 할 때 데이터베이스 버전을 변경해야합니다, 그것에서 인용하고는 그들이 버전 1이있는 경우가있는 경우는 X와 Y가 할 만 할 데이터베이스의 버전 번호를 키 입력됩니다

Dao<Account, Integer> dao = getHelper().getAccountDao(); 
// change the table to add a new column named "age" 
dao.executeRaw("ALTER TABLE `account` ADD COLUMN age INTEGER;"); 

대부분의 경우 : onUpgrade(...) 방법은 그런 짓을 버전 2 방금 그런 Y. 뭔가를 수행

if (oldVersion == 1) { 
    // we added the age column in version 2 
    dao.executeRaw("ALTER TABLE `account` ADD COLUMN age INTEGER;"); 
} 
if (oldVersion < 2) { 
    // we added the weight column in version 3 
    dao.executeRaw("ALTER TABLE `account` ADD COLUMN weight INTEGER;"); 
} 

당신 당신이 ALTER TABLE로 수행 할 수있는 작업에limited by Sqlite. 현재는 열의 이름을 바꾸거나 새 열을 추가 만 할 수 있습니다. 자세한 내용은 문서를 참조하십시오.

+0

감사합니다. 그러나 열을 추가하지 않고 이름을 변경하고 싶습니다. 칼럼의 이름을 바꿀 수는 없다고 읽었습니다. queryBuilder에서 열만 사용하려고합니다. 열에 이름을 지정하지 않으면 querybuilder를 사용할 수 없습니다. 사실입니까? – MARM

+0

@MARM. 죄송합니다. 나는 아직도 이해하지 못한다. sqlite에서 열의 이름을 바꿀 수 있습니다. 나는 당신이 할 수있는 것을 보여주는 Sqlite 페이지에 링크했다. http://www.sqlite.org/lang_altertable.html – Gray

+0

오, 저는 @MARM을 봅니다. 내 대답을 바꾸게 해줘. – Gray

2

감사합니다

  • 변경 데이터베이스 버전
  • 무시 "onUpgrade"는 변경할 수
  • 을 원하는 당신 change onCreate 메소드를 사용하면 새로운 사용자는 이전 버전이 아닌 데이터베이스의 좋은 버전을 갖게됩니다.

구조적으로 큰 변화가있는 경우 onUpgrade에서 유용한 정보를 새 데이터베이스에 복사하고 이전 데이터베이스를 삭제합니다.

은 도움이 :) 희망

+0

이 옵션에 대해 생각해 봤지만 다른 옵션이 있다고 생각했습니다. 왜냐하면 나는 querybuilder를 사용하기 위해 컬럼의 이름을 추가하기 만하면되기 때문이다. 내가 테이블을 만들었을 때 나는 데이터베이스를 변경해야한다고 생각하지 않았습니다. 감사합니다 – MARM

관련 문제