2012-06-07 4 views
0

У меня следующий код, чтобы создать свой дб ..Нет такой ошибки колонки SQLite Android

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; 
    } 

Но я получаю ошибку, что сказал :

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, выполнив следующие действия (очевидно, подключить телефон к ПК, прежде чем делать шаги)

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

Смотрите, если таблица действительно имеет столбец «CuandoInferir». Если нет, попробуйте воссоздать таблицу.

+0

Я проверил db и столбец эффективно появляется, и я схожу с ума .., но это не работает. Также я очистил проект в Eclipse и обновил его и т. Д. – user1443065

+0

Хорошо, просто случайная идея - вы могли бы использовать другую кодировку (то есть другой язык) при создании базы данных, так что имена просто кажутся одинаковыми визуально в то время как действительно отличается? Другое дело - возможно, вы можете попробовать создать базу данных без внешнего ключа, точно так же, как тест, чтобы увидеть, будет ли он работать. – Dimath

+0

Наконец-то я удалил колонку «Cuando Inferir» и прекрасно работает, просто бог знает, что произойдет ... Полагаю. Плохая часть заключается в том, что я сломал свою модель ... – user1443065

1

Возможно, вы работаете со старой версией базы данных. Очистить данные приложения и повторите попытку:

Настройки ->Приложения ->Управление приложениями ->[приложение] ->Очистить данные

+0

Вы ссылаетесь на Eclipse IDE или где я могу это сделать – user1443065

+0

Вы должны сделать это на своем устройстве (или эмуляторе, если это то, что вы используете). т.е. перейдите в панель запуска приложений и нажмите «настройки», затем «приложения» и т. д. –

+0

Я сделал это, но он все еще не работает, я, наконец, удалил столбец «Cuando Inferir» и отлично работает, просто бог знает, что произойдет. .Я полагаю. Плохая часть заключается в том, что я сломал свою модель ... – user1443065

Смежные вопросы