我的logcat消息:
(1)“INTEGER”附近:语法错误 CREATE_SQL中的异常 android.database.sqlite.SQLiteException:near“INTEGER”:语法错误(codee1):,编译时:创建BOMUL_PLACE(_id INTEGER NOT NULL PRIMARY KEY AUTOICREMENT,NAME TEXT,LAT DOUBLE,LNG DOUBLE,CHECK INTEGER DEFAULT 0); < / p>
和我的代码:
public void onCreate(SQLiteDatabase db) { // TABLE_BOMUL_PLACE println(“Creating table [”+ TABLE_BOMUL_PLACE +“]。”);
//drop existing table
String DROP_SQL = "drop table if exists " + TABLE_BOMUL_PLACE;
try
{
db.execSQL(DROP_SQL);
}
catch(Exception ex)
{
Log.e(TAG, "Exception in DROP_SQL", ex);
}
String CREATE_SQL = "create table " + TABLE_BOMUL_PLACE + "("
+ " _id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "
+ " NAME TEXT, "
+ " LAT DOUBLE, "
+ " LNG DOUBLE, "
+ " CHECK INTEGER DEFAULT 0);";
try
{
db.execSQL(CREATE_SQL);
}
catch(Exception ex)
{
Log.e(TAG, "Exception in CREATE_SQL", ex);
}
答案 0 :(得分:1)
语法错误来自CHECK
列。 CHECK
是SQL保留字,需要重命名或"quoted"
。
您似乎已在代码中解决的logcat的其他语法问题:
create BOMUL_PLACE( _id INTEGER NOT NULL PRIMARY KEY AUTOICREMENT, NAME TEXT, LAT DOUBLE, LNG DOUBLE, CHECK INTEGER DEFAULT 0
CREATE TABLE
,TABLE
缺少
AUTOINCREMENT
拼写错误
)
失踪
此外,NOT NULL
对于主键列来说是多余的。
修复onCreate()
后,卸载您的应用,以便删除先前的数据库文件并再次调用onCreate()
。建议不要捕获异常,因为如果SQLiteOpenHelper
正常返回,onCreate()
会认为创建成功。
答案 1 :(得分:-1)
您可以尝试在表名TABLE_BOMUL_PLACE
和(
符号之间添加空格。
it should be
TABLE_BOMUL_PLACE + " ("