Android语法错误sqlite创建表

时间:2014-10-09 23:06:24

标签: android sqlite

在我的Android应用程序中,我正在扩展SQLiteOpenHelper来创建一个SQLite数据库。

这是我的 onCreate 方法:

@Override
public void onCreate(SQLiteDatabase database) {
    String sql = "CREATE TABLE ? ( " + SuggestionColumns._ID + " INTEGER PRIMARY KEY)"; 
    String[] params = new String[]{SuggestionColumns.TABLE_NAME};
    database.execSQL(sql, params);

但LogCat提示我以下错误:

10-10 00:55:03.255: E/SQLiteLog(22311): (1) near "?": syntax error
10-10 00:59:20.605: W/SuggestionsAdapter(22311): Search suggestions query threw an exception.
10-10 00:59:20.605: W/SuggestionsAdapter(22311): android.database.sqlite.SQLiteException: near "?": syntax error (code 1): , while compiling: CREATE TABLE ? ( _id INTEGER PRIMARY KEY);

但是如果我用一个字符串替换占位符并调用 execSql(sql); 就可以了。

所以问题是:是否禁止在CREATE TABLE语句中使用占位符?

1 个答案:

答案 0 :(得分:1)

占位符仅限于文字,例如WHERE子句中比较语句的右侧,或者要插入INSERT语句中的值。占位符不能用于SQL语句的其他部分,例如表名或列名。