在我的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语句中使用占位符?
答案 0 :(得分:1)
占位符仅限于文字,例如WHERE
子句中比较语句的右侧,或者要插入INSERT
语句中的值。占位符不能用于SQL语句的其他部分,例如表名或列名。