在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...);
是什么这行代码实际上呢? 字符串sqlTableName =“\”“+ email.replace(”\“”,“\”\“”)+“\”“; 我真的不能遵循 –
这是基本的Java,我解释了为什么它是如果您不了解某个特定操作,请提出一个新问题。 –
:工作正常!谢谢! –