我正在尝试使用 Java 构建一个登录 UI。但是我的 SQL 身份验证有问题
代码如下:
public void actionPerformed(ActionEvent e){
if (e.getSource() == Login)
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:MessageStore","sa","12345");
Statement cmd=con.createStatement();
ResultSet rs=cmd.executeQuery("select * from UserList where UserName='"+nameText.getText());
}
但是有一个带有“rs”的警告: 局部变量rs的值没有被使用
如何解决这个问题?
或者是否有更简单的代码来实现 SQL 身份验证?
谢谢
最佳答案
在大多数情况下,“变量 X 的值未被使用”,您可以选择忽略该消息或删除对其的赋值。在这些情况下,您无需对该值执行任何操作。
但是,在这种情况下,您仅对数据库执行查询,但不对结果执行任何操作。因此您不知道您尝试验证的用户是否确实是有效用户。
因此,您必须使用变量“rs”来检查是否确实有结果以及是否允许用户登录。
public void actionPerformed(ActionEvent e){
if (e.getSource() == Login){
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // may not be needed since JDBC4
Connection con=DriverManager.getConnection("jdbc:odbc:MessageStore","sa","12345");
PrePareStatement cmd=con.prepareStatement("select * from UserList where username=?"); // safer, protect against
cmd.setString(1,nameText.getText());
ResultSet rs=cmd.executeQuery();
if( rs.next() ){
// username does exist, now check the password
}else{
// username does not exist
}
}catch(Exception e){}
}
}
关于java - Java 中使用 SQL 身份验证登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10152242/