首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQLite中单击按钮即可动态创建表格

问在SQLite中单击按钮即可动态创建表格
EN

Stack Overflow用户
提问于 2016-07-30 14:38:04
回答 1查看 830关注 0票数 0

我正在创建一个登录应用程序,并希望在每个用户单击注册按钮时为他们创建一个表。问题是,我使用他们唯一的电子邮件id作为表名。后来我发现表名不能有像"@“这样的特殊字符。请给我推荐一种创建带有特殊字符的表的方法,如"@“。否则,请建议我一种方法,当他们单击注册按钮时,为每个用户创建具有唯一名称的表。

请注意:下面代码中的“TABLE_NAME”是另一个包含注册用户详细信息的表。

代码如下:

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-30 14:51:39

在SQL中,标识符可以用双引号引起来。标识符中的任何双引号都必须用双引号进行转义;在Java字符串中,双引号必须用反斜杠转义:

代码语言:javascript
复制
String sqlTableName = "\"" + email.replace("\"", "\"\"") + "\"";
db.execSql("CREATE TABLE " + sqlTableName + "...");

但是,将数据放入表名中不是一个好主意,因为它不能像所有其他数据一样被查询和修改。

最好使用单个表,并将该信息放入另一列中:

代码语言:javascript
复制
CREATE TABLE Users(EMail TEXT, Choice TEXT, Q...);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38671107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档