2012-06-07 54 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,請閱讀常見問題解答:http://stackoverflow.com/faq如果您遵循該指南,您將有更好的運氣獲得幫助。 – FoamyGuy

+0

錯誤信息是正確的。聽這個。 –

+0

我看到並看到....錯誤消息。可能我飽和了,但我看不到錯誤。認真 – user1443065

回答

0

您的代碼似乎很好,但我會檢查現有的數據庫。檢查'ProposicionCondicional'表中的列名。您可以通過sqlite3的以下步驟打開你的數據庫做(顯然做的步驟之前,將手機連接到PC)

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

看看錶真有「CuandoInferir」列。如果不是,請嘗試重新創建表格。

+0

我檢查了數據庫和有效地出現列,我轉爲瘋狂......爲什麼它不工作。另外我在Eclipse中清理了這個項目並刷新了它,依此類推... – user1443065

+0

好吧,只是一個隨意的想法 - 你可以在創建數據庫時使用不同的編碼(即不同的語言),所以這些名稱看起來似乎是相同的雖然真的不同? 另一件事 - 可能是你可以嘗試創建沒有外鍵的數據庫,只是作爲一個測試,看看它是否會工作。 – Dimath

+0

我終於刪除了'Cuando Inferir'這個專欄並且工作正常,只是上帝知道發生了什麼......我想。不好的部分是我打破了我的模型... – user1443065

1

您可能正在使用舊版本的數據庫。清除應用的數據,然後再試一次:

設置 - >應用 - >管理應用程序 - >[您的應用程序] - >清除數據

+0

您是否在Eclipse IDE中提及或在哪裏可以做到這一點 – user1443065

+0

您應該在您的設備(或模擬器,如果這是您正在使用的)上執行此操作。即轉到應用程序啓動器,然後按「設置」,然後「應用程序」等 –

+0

我做到了這一點,但它仍然無法正常工作,我最終刪除了'Cuando Inferir'這個專欄並且工作正常,只是上帝知道發生了什麼。 。我想。不好的部分是我打破了我的模型... – user1443065