2012-03-21 63 views
0

問題很簡單,只需將它放在一行中:「Android的SQLiteDatabase的insert()函數嘗試以隨機方式添加值」。db.insert add values random?

含義:

// Database creation sql statement 
private static final String DATABASE_CREATE = "create table " 
     + TABLE_NAME 
     +"(" 
     + COLUMN_ID + " integer primary key autoincrement, " 
     + COLUMN_LATITUDE + "integer," 
     + COLUMN_LONGTITUDE + "integer," 
     + COLUMN_TITLE + "text," 
     + COLUMN_TEXT + " text not null" 
     + ");"; 

當我把這些值,並嘗試將其插入:

values.put(COLUMN_ID, marker.getId()); 
values.put(COLUMN_LATITUDE, marker.getLatitude() ); // lat 
values.put(COLUMN_LONGTITUDE, marker.getLongtitude()); // long  
values.put(COLUMN_TITLE, marker.getTitle() ); // Title  
values.put(COLUMN_TEXT, marker.getText()); // Text  

// Inserting Row 
     db.insert(TABLE_NAME, null, values); 

,但我得到的錯誤是: E /數據庫(2542):android.database .sqlite.SQLiteException:表項目沒有命名爲long的列:,同時編譯:INSERT INTO項目(經度,文本,標題,緯度,_id)VALUES(?,?,?,?,?);

所以我想是試圖把經常在哪裏的Id和導致錯誤。

我的假設是正確的嗎?我需要改變什麼?

+0

在運行插入之前,請確保您的表存在。你可以通過在插入處設置一個斷點來實現,然後使用adb連接到你的sqlite數據庫並運行一個.tables命令 – Shellum 2012-03-21 21:43:46

+0

好點。我會檢查是否儘快 – t0s 2012-03-21 21:45:47

+0

你是對的查克。那麼我怎樣才能讓它乾淨,在開始插入之前創建? – t0s 2012-03-21 21:54:24

回答

1

您的CREATE TABLE語句中的錯誤,你錯過了之前各類一些空間(整數,文本),這裏是正確的版本:

private static final String DATABASE_CREATE = "create table " 
    + TABLE_NAME 
    +"(" 
    + COLUMN_ID + " integer primary key autoincrement, " 
    + COLUMN_LATITUDE + " integer," 
    + COLUMN_LONGTITUDE + " integer," 
    + COLUMN_TITLE + " text," 
    + COLUMN_TEXT + " text not null" 
    + ");"; 

你之前沒有創建一個名爲列「經度」。取而代之的是「longitude整數」創建

+0

是的,你是對的。我忘了一個空間。正如Chuck Norris在他的評論中寫道,當我使用adb並檢查了我的表格架構時,我發現了這個錯誤。 – t0s 2012-03-22 01:14:58