问题很简单,只需一行:“SQLiteDatabase for Android的insert()函数尝试以随机方式添加值”。
意义:
// 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 / Database(2542):android.database.sqlite.SQLiteException: table Items没有名为longtitude的列:,同时编译:INSERT INTO项目(longtitude,text,title,latitude,_id)VALUES( ?,?,?,?,?);
所以我猜是试图将长度放在Id所在的位置并导致错误。
我的假设是对的吗?我需要改变什么?
答案 0 :(得分: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”的列之前。而是创建了“longitudeinteger”