2012-03-21 59 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