Java 遍历结果集
可能重复: 坦率地说,这个问题问起来可能很傻,但我是Java的新手。 这是我的表名、id、地址、日期 现在我将匹配某个员工的相应密码Java 遍历结果集,java,jdbc,Java,Jdbc,可能重复: 坦率地说,这个问题问起来可能很傻,但我是Java的新手。 这是我的表名、id、地址、日期 现在我将匹配某个员工的相应密码 任何输入都将受到高度赞赏。您正在为所有员工选择数据,并在其中查找匹配项 最好让数据库对其进行筛选: select count(*) from regid where emp_id = ? and password = ? 然后您只需要检查它是否返回0或1 此外,密码希望只是一个密码散列。使用密码散列创建查询。因此,PreparedStatement的参数化查
任何输入都将受到高度赞赏。您正在为所有员工选择数据,并在其中查找匹配项 最好让数据库对其进行筛选:
select count(*) from regid where emp_id = ? and password = ?
然后您只需要检查它是否返回0或1
此外,密码希望只是一个密码散列。使用密码散列创建查询。因此,PreparedStatement的参数化查询如下:
SELECT * from regid WHERE emp_id = ? AND password = ?
PreparedStatement ps = null;
ResultSet rs = null;
boolean validUser = false;
try{
ps = connection.prepareStatement("SELECT * from regid WHERE emp_id = ? AND password = ?");
ps.setString(1, [user_id_input]);
ps.setString(2, [user_pw_input]);
rs = ps.executeQuery();
validUser = rs.next();
}finally{
//Release your resources
}
if(validUser){
//user is validated
}
插入参数值并执行语句。所以应该是这样的:
SELECT * from regid WHERE emp_id = ? AND password = ?
PreparedStatement ps = null;
ResultSet rs = null;
boolean validUser = false;
try{
ps = connection.prepareStatement("SELECT * from regid WHERE emp_id = ? AND password = ?");
ps.setString(1, [user_id_input]);
ps.setString(2, [user_pw_input]);
rs = ps.executeQuery();
validUser = rs.next();
}finally{
//Release your resources
}
if(validUser){
//user is validated
}
作为补充说明,我还建议在将用户的输入输入输入到查询之前验证用户的输入。使用选择的emp\u id、密码等查询数据库,。。。来自regid,其中emp_id=?密码=
创建PreparedStatement并设置emp_id和密码。如果emp_id和密码匹配,它将返回1行 您实际上不应该在结果集中匹配密码。您的sql查询应该类似于
select emp_id from regid where password='userpassword'
其中userpassword是您从屏幕上获得的密码,您使用从数据库获取所有数据会降低应用程序的性能,因此激发以下查询检索一条记录
boolean status = false;
String emp_name = "";
String emp_password = "";
String sql = "select * from regid where emp_id='"+emp_id+"' AND password='"+password+"'";
ResultSet rs = st.executeQuery(sql);
while(rs.next()){
if(emp_id.equals(rs.getString("emp_id")) && password.equals(rs.getString("password")))
{
// fetch employee data
status = true;
}
}
if(status)
{
// login correct
}
else
{
// login incorrect
}
你有基本的想法。您的确切问题是什么?如果找到有效结果,您需要有人指导您怎么做?//获取所有数据。。。。在术语代码中应该有什么?将有其他员工数据,如部门名称,因此检索rs.getStringdepartment\u名称;在代码方面……如何匹配emp_id和密码,//您能……:可以通过编写代码给客户一个公平的想法…://释放您的资源-这意味着什么…在代码方面?这意味着您应该关闭您的结果集和您的PreparedStatement:if rs!=空rs.close;如果ps=nullps.close;