2014-10-09 104 views
1

我的Android應用程序我正在擴展SQLiteOpenHelper創建一個SQLite數據庫。Android語法錯誤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

佔位符僅限於文字,例如WHERE條款中的比較語句的右側或INSERT語句中要插入的值。佔位符不能用於SQL語句的其他部分,例如表名或列名。

+0

噢,好的,謝謝。它是否存在於官方文檔中?我花了數小時尋找它,沒有結果! – user2340612 2014-10-09 23:39:52

+1

@ user2340612:在C API的SQLite文檔中,是:https://www.sqlite.org/c3ref/bind_blob.html – CommonsWare 2014-10-09 23:49:24

+0

GREAT !!再次感謝 ;) – user2340612 2014-10-09 23:54:30