2012-06-07 5 views
0

나는 이러한 열 오류 SQLite는 안드로이드

public class ModeloPaciente extends SQLiteOpenHelper { 
//Tabla Proposicion Condicional 
static final String proposicionCondicionalTabla="ProposicionCondicional"; 
static final String colproposicionCondicionalID="ProposicionCondicionalID"; 
static final String colproposicionCondicionalDescripcion="ProposicionCondicionalDescripcion"; 
static final String colproposicionCondicionalcuandoInferirForeign="CuandoInferir"; 

public ModeloPaciente(Context context) { 
    super(context, dbName, null, 1); 
} 

@Override 
public void onCreate(SQLiteDatabase db) {  

db.execSQL("CREATE TABLE "+proposicionCondicionalTabla+" " + 
"("+colproposicionCondicionalID+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
colproposicionCondicionalDescripcion+ " TEXT NOT NULL," + 
colproposicionCondicionalcuandoInferirForeign+" INTEGER NOT NULL,"+ 
"FOREIGN KEY ("+colproposicionCondicionalcuandoInferirForeign+") REFERENCES "+cuandoInferirTabla+"  
("+colcuandoInferirID+"));");    
} 

나중에 나는이

public boolean insertarProposicion(Proposicion proposicion) { 
    try { 
      SQLiteDatabase db=this.getWritableDatabase(); 
      ContentValues cv= new ContentValues(); 
      cv.put(colproposicionCondicionalDescripcion, proposicion.getProposicionCondicionalDescripcion());    
      cv.put(colproposicionCondicionalcuandoInferirForeign, getCuandoInferirID(proposicion.getProposicionCondicionalCuandoInferirForeign())); 
      db.insert(proposicionCondicionalTabla, colproposicionCondicionalID, cv); 
     //db.close(); 
      return true; 
    } catch (Exception e) { 
     System.out.println(e); 
     return false; 
    } 

같은 테이블 내부에 데이터를 입력

.. 내 DB를 만들 수있는 다음 코드가 없다 그러나 나는 말했다 오류가 :

06-07 15:36:15.507: E/Database(257): Error inserting CuandoInferir=1 ProposicionCondicionalDescripcion=Se debe inferir acerca de los dias de marcha realizados o no 
06-07 15:36:15.507: E/Database(257): android.database.sqlite.SQLiteException: no such column: CuandoInferir: , while compiling: INSERT INTO ProposicionCondicional(CuandoInferir, ProposicionCondicionalDescripcion) VALUES(?, ?); 

그리고 데이터베이스를 확인하고 해당 열 "CuandoInferir"이 있습니다. ¿ 무슨 일 이죠? 귀하의 도움을 주셔서 감사합니다

+1

하지 마십시오>응용 프로그램을 관리 모든 대문자로 제목을 게시하십시오. 그리고 당신이 가진 문제와 관련이있게 만드십시오. StackOverflow에 오신 것을 환영합니다. FAQ : http://stackoverflow.com/faq 지침을 따르는 것이 도움이 될 것입니다. – FoamyGuy

+0

오류 메시지가 맞습니다. 들어 봐. –

+0

나는보고,보고, .... 오류 메시지를 볼 수있다. 나는 포화 상태 일지 모르지만 오류를 볼 수는 없다. 심각하게 – user1443065

답변

0

코드가 잘 보이지만 기존 데이터베이스를 확인합니다. 'ProposicionCondicional'테이블에서 열 이름을 확인하십시오. 당신은 다음 단계에 따라 sqlite3를에서 데이터베이스를 열어 그것을 할 수있는 테이블이 정말 'CuandoInferir'열이있는 경우

adb shell 
cd /data/data/<your.applications.package>/databases 
sqlite3 <databases_name> 
.schema 

참조 (분명히 단계를 수행하기 전에 PC에 휴대폰을 연결합니다). 그렇지 않은 경우 테이블을 다시 작성하십시오.

+0

나는 db를 확인하고 열이 효과적으로 나타나고, 나는 미쳐 버렸다. 왜 작동하지 않는가? 또한 이클립스에서 프로젝트를 청소하고 그것을 새로 고침 ... – user1443065

+0

좋아, 그냥 임의의 아이디어 - 당신이 다른 인코딩 (즉, 다른 언어) 데이터베이스를 만드는 동안 사용할 수있는 이름은 그냥 시각적으로 동일하게 보인다 진짜로 다른 동안? 또 다른 문제는 외래 키가없는 데이터베이스를 테스트와 마찬가지로 시도하여 작동 여부를 확인할 수 있습니다. – Dimath

+0

필자는 마침내 'Cuando Inferir'열을 삭제하고 정상적으로 작동하지만 신이 무슨 일이 일어나는 지 알고 있습니다. 나쁜 부분은 내 모델을 깨뜨린 것입니다 ... – user1443065

1

이전 버전의 데이터베이스로 작업 중일 수 있습니다. 앱의 데이터를 지우고 다시 시도 :

설정 ->응용 프로그램 ->[앱이] - ->데이터 지우기

+0

이클립스 IDE에서 언급 했습니까? 어디에서 할 수 있습니까? – user1443065

+0

장치 (또는 에뮬레이터, 사용중인 경우이 경우)에서이 작업을 수행해야합니다. 즉, 응용 프로그램 실행기로 이동하여 "설정", "응용 프로그램"등을 누르십시오. –

+0

이 작업을 수행했지만 여전히 작동하지 않습니다. 결국 'Cuando Inferir'열을 삭제하고 올바르게 작동합니다. 그렇 겠지. 나쁜 부분은 내가 내 모델을 깨뜨렸다는 것입니다 ... – user1443065

관련 문제