2013-10-09 58 views
0

我創造了這個表錯誤插入的SQLite的Android

private static class PuntataMetaData { 
    static final String TABLE_NAME = "puntata"; 
    static final String ID = "_id"; 
    static final String PALINSESTO = "palinsesto"; 
    static final String NUMEROPALINSESTO = "numeroPalinsesto"; 
    static final String ESITO = "esito"; 
    static final String PARTITA = "partita"; 
    static final String QUOTAZIONE = "quotazione"; 
} 


private static final String PUNTATA_TABLE_CREATE = 
     "CREATE TABLE " + PuntataMetaData.TABLE_NAME + " (" + 
       PuntataMetaData.ID + " integer primary key autoincrement, " + 
       PuntataMetaData.PALINSESTO + " double not null, " + 
       PuntataMetaData.NUMEROPALINSESTO + " integer not null, " + 
       PuntataMetaData.ESITO + " text not null, " + 
       PuntataMetaData.PARTITA + "text not null," + 
       PuntataMetaData.QUOTAZIONE + " text not null);"; 

現在,當我搜索到執行該代碼

public void inserisciInSchedina(Partite p, String esito, String quot){ 
    db = getWritableDatabase(); 
    ContentValues cv = createPuntataContentValues(p.getPalinsesto(), p.getNumeroEvento(), esito, quot, p.getPartita()); 
    db.insert(PuntataMetaData.TABLE_NAME, null, cv); 
    db = getReadableDatabase(); 
} 

private ContentValues createPuntataContentValues(long pal, int numPal, String temp, String temp1, String par) { 
    ContentValues cv = new ContentValues(); 
    cv.put(PuntataMetaData.PALINSESTO, pal); 
    cv.put(PuntataMetaData.NUMEROPALINSESTO, numPal); 
    cv.put(PuntataMetaData.ESITO, temp); 
    cv.put(PuntataMetaData.PARTITA, "Inter-Roma"); 
    cv.put(PuntataMetaData.QUOTAZIONE, temp1); 
    return cv; 
} 

的Android的調試對我說了以下錯誤:

android.database.sqlite.SQLiteException: table puntata has no column named partita: , while compiling: INSERT INTO puntata(numeroPalinsesto,esito,quotazione,partita,palinsesto) VALUES (?,?,?,?,?)

我不明白錯誤在哪裏,因爲字段「Partita」存在於DB中 謝謝

+1

你有沒有機會從沒有'partita'專欄的桌子開始?如果你遵循了在Android上使用'SQLite'的指導原則,你的create語句可能不會再被調用,所以表沒有列。 – Darwind

+0

對不起,但我不明白你的答案Darwind,從一開始我就創建了桌子Puntata。我以讀/寫模式打開數據庫,但是當我搜索插入一行時,我有錯誤寫在首頁 – Bobsus88

+0

好吧,我想也許你應該瞭解一下Android和SQLite如何一起工作。這裏有一個很好的教程:http://www.vogella.com/articles/AndroidSQLite/article.html 反正 - 嘗試從設備中刪除你的應用程序並重新安裝它,看看它是否有幫助。 如果這有幫助,我會全面回答你的問題,並解釋爲什麼發生這種情況。 :-) – Darwind

回答

-1

轉到設備或模擬器上的應用程序管理器,然後單擊「清除數據」按鈕。然後再檢查一次。也許你先創建表格而不用分欄,然後你決定去做。最好使用SQLiteOpenHelper類中的數據庫版本來控制這些問題。

+0

我有證據來清除我的模擬器上的數據,從Android工具修復項目專有權,從java清潔項目;但不幸的是錯誤依然存在。我不知道該怎麼辦 – Bobsus88

1
PuntataMetaData.PARTITA + "text not null," + 

您正在使用的名稱partitatext和類型not null創建一個列。

+0

非常感謝你CL,我還沒有看到這個愚蠢的錯誤;而且我已經失去了更多的1小時 – Bobsus88

1

一旦你改變了DB我的意思是表像你改變表的創建,那麼你需要取消安裝在模擬器的應用程序,並再次運行它,將創建數據庫的新版本,那麼你可以添加你的數據

+0

也刪除應用程序的數據確保。 – Aiapaec