我最摇摆君 2015-05-20 11:11 采纳率: 0%
浏览 2942

Android sqlite 把用户名和其他表关联起来

现在做了一个登陆注册的功能,这是数据库的一个表
又做了一个功能类似日记的纪录功能,如何将这两个表关联起来,实现每人在登陆之后都看到的是自己的日记纪录,而不是所有人日记纪录?
表的格式是表1 id username password 表2 id notename notecontent date username

定义一个全局变量 让他在注册后=注册时username 然后写日记或者看日记的时候将表2的username等于这个全局变量 可行吗?
为什么代码会报错?求分析 下面是代码

public static String ANAME = null;

NotesDB.ANAME = username.getText().toString().trim();
Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_LONG).show();

adapter.changeCursor(dbRead.query(NotesDB.TABLE_NAME_NOTES, null, "username=NotesDB.ANAME", null, null, null, null));
}

最后一段会报错
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 22:06
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在你的代码中,你尝试将ANAME设置为username.getText().toString().trim()。但是,你需要确保你在获取用户输入之前对字符串进行处理。如果你只是简单地删除空格和换行符,那么这可能不会正确地匹配到用户的输入。

    正确的做法是先检查输入是否为空,然后使用toLowerCase()replace方法来去除所有非字母数字字符,并将其转换为小写。这样可以确保username只包含字母和数字,从而避免了潜在的问题。

    下面是修改后的代码:

    public static String ANAME = null;
    
    // 获取用户名
    String username = username.getText().toString();
    // 去除空白和特殊字符并转换为小写
    String trimmedUsername = username.toLowerCase().replaceAll("[^a-zA-Z0-9]", "");
    if (!trimmedUsername.isEmpty()) {
        // 设置全局变量
        ANAME = trimmedUsername;
    }
    

    这段代码首先获取用户输入的用户名,然后去除任何空白字符(包括空格、制表符等)并将结果转换为小写。如果用户输入不为空,那么它会被存储在全局变量ANAME中。

    评论

报告相同问题?