2016-07-30 96 views
0

我正在創建一個登錄應用程序,我想爲每個用戶創建一個表,當他們點擊註冊按鈕時。問題是,我正在使用他們唯一的電子郵件ID作爲表名。後來我知道表名不能有像「@」這樣的特殊字符。請給我建議一種方法來創建名稱具有特殊字符如「@」的表格。否則,請爲我提供一種方法,當他們單擊註冊按鈕時爲每個用戶創建具有唯一名稱的表格。在SQLite的按鈕點擊動態表創建

請注意:下面給出的代碼中的「TABLE_NAME」是另一個包含註冊用戶詳細信息的表。

的代碼如下:

public boolean insertData(String name, String email, String mobile, String pass){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.execSQL("create table "+email+"(Choice TEXT, Q1 INTEGER, Q2 INTEGER, Q3 INTEGER, Q4 INTEGER, Q5 INTEGER)"); 
    ContentValues cv = new ContentValues(); 
    cv.put(NAME, name); 
    cv.put(EMAIL, email); 
    cv.put(MOBILE, mobile); 
    cv.put(PASSWORD, pass); 
    long result = db.insert(TABLE_NAME,null,cv); 
    db.close(); 
    if(result == -1) 
     return false; 
    else 
     return true; 
} 

回答

0

在SQL中,標識符可以用雙引號標註。標識符內的任何雙引號都必須加倍以避免它們;和Java中的字符串,雙引號必須用反斜線:

String sqlTableName = "\"" + email.replace("\"", "\"\"") + "\""; 
db.execSql("CREATE TABLE " + sqlTableName + "..."); 

然而,將數據放入表名是一個壞主意,因爲它不能被查詢和修改喜歡你的所有其他數據。

更好地使用一個表,並把這些信息到另一列:

CREATE TABLE Users(EMail TEXT, Choice TEXT, Q...); 
+0

是什麼這行代碼實際上呢? 字符串sqlTableName =「\」「+ email.replace(」\「」,「\」\「」)+「\」「; 我真的不能遵循 –

+0

這是基本的Java,我解釋了爲什麼它是如果您不瞭解某個特定操作,請提出一個新問題。 –

+0

:工作正常!謝謝! –

相關問題