创建表db时出现android语法错误

时间:2014-01-27 17:40:31

标签: android database sqlite

我的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);
       }

2 个答案:

答案 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 TABLETABLE缺少

  • AUTOINCREMENT拼写错误

  • 最后
  • )失踪

此外,NOT NULL对于主键列来说是多余的。

修复onCreate()后,卸载您的应用,以便删除先前的数据库文件并再次调用onCreate()。建议不要捕获异常,因为如果SQLiteOpenHelper正常返回,onCreate()会认为创建成功。

答案 1 :(得分:-1)

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

it should be 
TABLE_BOMUL_PLACE + " ("