Web应用程序servlet查询和显示来自mysql的用户信息
问题描述:
我需要为网页应用程序执行任务,即通过查询客户端的会话ID(或其他一些其他信息) 来显示客户端信息方法),然后在my membership数据库中执行mySQL查询。Web应用程序servlet查询和显示来自mysql的用户信息
的顺序应该是如下:1. 客户端登录在 2.比较客户端的密码和会员数据库,如果匹配,客户端将能够访问一些网页 3.这些访问的页面之一(中提到的2)中将包含一个链接,然后将在会员资料库中查询客户的信息。 4.查询行(结果)将显示在网页上,
会员资料库 餐桌名称=会员
id | first name | last name | address | telephone number
我已经创建并建立一个JDBC连接到数据库:
public void init() throws ServletException {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/membership","root","");
stmt = conn.createStatement();
} catch (ClassNotFoundException ex) { // for Class.forName()
ex.printStackTrace();
} catch (SQLException ex) { // for getConnection()
ex.printStackTrace();
}
}
String query = "SELECT * FROM member WHERE xxx ";
ResultSet rset = stmt.executeQuery(query);
我的问题是:我如何抢在这里我的问题了必要的行?我该如何解决这个问题?
非常感谢你的建议
答
“我的问题是:我如何在这里抢我的问题的必要行”
使用你的ResultSet对象(rset)。然后检索您需要的任何列。 事情类似:
while (rs.next()) {
int ID = rs.getInt("id");
String fName = rs.getString("first_name");
String lName = rs.getString("last_name");
String address = rs.getString("address");
String phone = rs.getString("telephone_number");
}
答
首先,我强烈建议你在你的列名没有空格(如使用“_”来代替)。
您的登录用户凭据是什么?我想象它是用户名或email_address以及密码。无论第一部分是什么(例如用户名),您都可以将它用作成员表的主键。因此,在他们登录后,您已经拥有了用户名,并在SQL查询中形成了'where'子句。 (如果他们有EMAIL_ADDRESS登录,一切工作一样,用到位的用户名。)
所以步骤是从用户
- 采取用户名+密码
- 匹配的行的select count对
- 如果计数== 1,则他们验证,否则拒绝
- 选择其他字段相匹配的用户名
- 显示给用户
不要存储密码明文,所以无论您申请存储密码的变换,还是在执行#2之前将其应用于给定的密码。如果您选择使用户名不是主键,请确保您通过约束至少使其成为“唯一”。