修改用户密码提示用户名不存在

今天想要修改一个用户的密码,但是在执行完alter user语句后,提示用户不存在。查看dba_users视图后,该用户的确是存在的,但是注意到一个细节是用户名是小写的,其他的用户名都是大写。在群内咨询过大神后,原来是在创建用户时,把用户名用双引号包起来了,如果没有用双引号,数据库会自动将用户名改为大写,但是用了双引号后,则保持小写。解决方法为,若创建过程用引号包起来,则在后续的使用过程中,也需要将用户名用引号包起来。在本机测试过程如下:
创建用户成功后,紧接着修改用户密码,提示用户不存在:

查看dba_users视图发现该用户存在,但是用户名比较特殊,为小写:

解决方法,修改密码时,也将用户名用双引号引起来:

同样的,若创建表时,将表明用双引号包起来,也会出现同样情况,如下图所示:

解决方法一样:

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29725229/viewspace-1411569/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29725229/viewspace-1411569/

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你的问题是将“实验7 利用Servlet程序实现用户注册与用户登录”的功能需求进行修改,改为将用户的注册信息写入数据库,并且实现登录时的用户名密码验证。这个问题其实有两个部分,一个是用户注册的改变,一个是登录验证的改变。我会分别回答你。 首先是用户注册的改变。原来的实验中,用户注册是将用户的信息存储在一个文本文件中。现在你希望将用户信息存储在数据库中。这个改变需要在Servlet程序中进行。具体来说,你需要在Servlet程序中建立与数据库的连接,并且将用户信息插入到数据库中。下面是一个示例代码,可以帮助你理解如何实现这个功能: ```java // 假设你已经获得了用户的注册信息,包括用户名密码和邮箱 String username = request.getParameter("username"); String password = request.getParameter("password"); String email = request.getParameter("email"); // 建立与数据库的连接 Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "password"); // 将用户信息插入到数据库中 PreparedStatement pstmt = conn.prepareStatement("INSERT INTO users(username, password, email) VALUES (?, ?, ?)"); pstmt.setString(1, username); pstmt.setString(2, password); pstmt.setString(3, email); pstmt.executeUpdate(); // 关闭连接 pstmt.close(); conn.close(); ``` 你需要将这段代码添加到你的Servlet程序中,以实现将用户信息写入数据库的功能。 接下来是登录验证的改变。原来的实验中,登录验证只需要检查用户输入的用户名密码是否与文本文件中的一致即可。现在你需要在数据库中查找用户,判断用户名密码是否正确。下面是一个示例代码,可以帮助你理解如何实现这个功能: ```java // 假设你已经获得了用户的登录信息,包括用户名密码 String username = request.getParameter("username"); String password = request.getParameter("password"); // 建立与数据库的连接 Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "password"); // 在数据库中查找用户 PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE username = ?"); pstmt.setString(1, username); ResultSet rs = pstmt.executeQuery(); // 如果用户名不存在,返回“用户名不存在”的提示信息 if (!rs.next()) { out.println("用户名不存在"); } else { // 如果密码不正确,返回“密码不正确”的提示信息 if (!rs.getString("password").equals(password)) { out.println("密码不正确"); } else { // 登录成功 out.println("登录成功"); } } // 关闭连接 rs.close(); pstmt.close(); conn.close(); ``` 你需要将这段代码添加到你的Servlet程序中,以实现登录验证的功能。 希望这个回答可以帮助你实现你的需求。如果还有什么问题,可以随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值