【问题标题】:CREATE table query syntax error in SQLite androidSQLite android中的CREATE表查询语法错误
【发布时间】:2015-11-30 15:21:27
【问题描述】:

我正在编写一个使用 sqlite 数据库的 android 应用程序,现在我在执行更新表的创建查询时遇到语法错误:

 // Logcat tag
private static final String LOG = "DatabaseHelper";

// Database Version
private static final int DATABASE_VERSION = 1;

// Database Name
private static final String DATABASE_NAME = "budget";

// Table Names
private static final String TABLE_CATEGORY = "category";
private static final String TABLE_UPDATE = "update";
private static final String TABLE_CATEGORY_UPDATE = "category_update";

// Common column names
private static final String KEY_ID = "id";

// Category Table - column nmaes
private static final String KEY_TYPE = "TYPE";


// Update Table - column names
private static final String KEY_MONEY = "money";
private static final String KEY_LOCATION = "location";
private static final String IMAGE_PATH = "image_path";
// CATEGORY_UPDATE Table - column names
private static final String KEY_CATEGORY_ID = "category_id";
private static final String KEY_UPDATE_ID = "update_id";


// Table Create Statements
// Category table create statement
private static final String CREATE_TABLE_CATEGORY = "CREATE TABLE if not exists "
        + TABLE_CATEGORY + "(" + KEY_ID + " INTEGER PRIMARY KEY autoincrement," + KEY_TYPE
        + " TEXT"+ ");";

// Update table create statement
private static final String CREATE_TABLE_UPDATE = "CREATE TABLE if not exists " + TABLE_UPDATE
        + "(" + KEY_ID + " INTEGER PRIMARY KEY autoincrement," + KEY_MONEY + " INTEGER,"
        + KEY_LOCATION + " TEXT," + IMAGE_PATH +" TEXT);";

// CATEGORY_UPDATE table create statement
private static final String CREATE_TABLE_CATEGORY_UPDATE = "CREATE TABLE if not exists "
        + TABLE_CATEGORY_UPDATE + "(" + KEY_ID + " INTEGER PRIMARY KEY autoincrement,"
        + KEY_CATEGORY_ID + " INTEGER," + KEY_UPDATE_ID + " INTEGER );";

所有创建查询的顺序如下:

@Override
public void onCreate(SQLiteDatabase db) {

    // creating required tables
    db.execSQL(CREATE_TABLE_CATEGORY_UPDATE);
    db.execSQL(CREATE_TABLE_CATEGORY);
    db.execSQL(CREATE_TABLE_UPDATE);

}

我在创建更新表中只收到一个语法错误,这里是打印的错误:

11-30 01:59:20.841 24880-24880/com.example.hassanalmusajjen.tba E/SQLiteLog: (1) near "update": syntax error
11-30 01:59:20.845 24880-24880/com.example.hassanalmusajjen.tba W/System.err: android.database.sqlite.SQLiteException: near "update": syntax error (code 1): , while compiling: CREATE TABLE if not exists update(id INTEGER PRIMARY KEY,money INTEGER,location TEXT,image_path TEXT);
11-30 01:59:20.846 24880-24880/com.example.hassanalmusajjen.tba W/System.err:     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
11-30 01:59:20.846 24880-24880/com.example.hassanalmusajjen.tba W/System.err:     at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
11-30 01:59:20.846 24880-24880/com.example.hassanalmusajjen.tba W/System.err:     at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
11-30 01:59:20.846 24880-24880/com.example.hassanalmusajjen.tba W/System.err:     at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588
11-30 01:59:20.846 24880-24880/com.example.hassanalmusajjen.tba W/System.err:     at com.example.hassanalmusajjen.tba.localDB.DatabaseHelper.onCreate(DatabaseHelper.java:77)

【问题讨论】:

  • 问题是 update 这是 SQLITE 中的一个关键字,但试图将其用作表名
  • 您没有使用“更新”关键字来更改表名并尝试解决您的问题

标签: android sqlite android-sqlite


【解决方案1】:

UPDATE,或者在你的情况下是update,是 SQLite 中的reserved keyword。为您的表选择一个不同的名称。

【讨论】:

  • 天哪,我怎么会忘记这个,是的,你是对的,它是一个关键字 =_=,非常感谢
  • @HassanAli 没问题。如果此解决方案解决了您的问题,请使用 downvote 按钮下方的复选标记将其标记为已接受的解决方案。如果您想了解更多关于接受答案的信息,read this
猜你喜欢
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
  • 2012-08-15
  • 2016-01-21
  • 2014-04-12
  • 1970-01-01
  • 2015-05-06
  • 1970-01-01
相关资源
最近更新 更多