2014-01-27 34 views
0

我logcat的消息:Android的语法错误,同时创建表的数据库

(1)附近的 “整数”:语法错误 异常在CREATE_SQL android.database.sqlite.SQLiteException:近 “整数”:语法错误(codee1 ):,编译时:创建BOMUL_PLACE(_id INTEGER NOT NULL PRIMARY KEY AUTOICREMENT,NAME TEXT,LAT DOUBLE,LNG DOUBLE,CHECK INTEGER DEFAULT 0);

和我的代码:

公共无效的onCreate(SQLiteDatabase分贝) { // TABLE_BOMUL_PLACE 的println( “创建表[” + 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); 
     } 

回答

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 TABLETABLE失踪

  • AUTOINCREMENT拼错

  • )在失踪结束

而且,NOT NULL对于主键列是多余的。

固定onCreate()后,所以以前的数据库文件被删除,onCreate()再次调用卸载你的应用程序。不建议捕捉异常,因为SQLiteOpenHelper会认为创建成功,如果onCreate()正常返回。

+0

感谢laalto你的建议工作。 “检查”是问题 –

-1

你可以尝试表名TABLE_BOMUL_PLACE(符号之间添加空间。

it should be 
TABLE_BOMUL_PLACE + " (" 
+0

我试过了。但它没有工作 –

+0

尝试重命名列名称“检查”。它是SQLIte中的关键字。 – Armen

+0

阿门感谢问题是“检查”。改变后,没有错误! –