我正在创建一个登录应用程序,并希望在每个用户单击注册按钮时为他们创建一个表。问题是,我使用他们唯一的电子邮件id作为表名。后来我发现表名不能有像"@“这样的特殊字符。请给我推荐一种创建带有特殊字符的表的方法,如"@“。否则,请建议我一种方法,当他们单击注册按钮时,为每个用户创建具有唯一名称的表。
请注意:下面代码中的“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;
}发布于 2016-07-30 14:51:39
在SQL中,标识符可以用双引号引起来。标识符中的任何双引号都必须用双引号进行转义;在Java字符串中,双引号必须用反斜杠转义:
String sqlTableName = "\"" + email.replace("\"", "\"\"") + "\"";
db.execSql("CREATE TABLE " + sqlTableName + "...");但是,将数据放入表名中不是一个好主意,因为它不能像所有其他数据一样被查询和修改。
最好使用单个表,并将该信息放入另一列中:
CREATE TABLE Users(EMail TEXT, Choice TEXT, Q...);https://stackoverflow.com/questions/38671107
复制相似问题