在SQLite的按钮点击动态表创建

问题描述:

我正在创建一个登录应用程序,我想为每个用户创建一个表,当他们点击注册按钮时。问题是,我正在使用他们唯一的电子邮件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; 
} 

在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

:工作正常!谢谢! –