如何在数据库中检索名字?

时间:2014-03-18 17:10:22

标签: java mysql database netbeans

我有这些代码

DBCollection.java

public LogInHandler userGreetName()
{
    LogInHandler login = new LogInHandler();
    String query = null;

    try
    {
        query = "SELECT First_Name FROM user_information WHERE Username = '"+login.getUsername()+"'";
        rs = stmt.executeQuery(query);
        rs.next();
        login.setGreetName(rs.getString("First_Name"));
    }
    catch(Exception e)
    {
        JOptionPane.showMessageDialog(null,e.toString());
    }
    return login;
}

在我的mainWindow.java我有formWindowOpened事件并包含代码

DBCollection dbc = new DBCollection();
greetNameL.setText(dbc.userGreetName().getGreetName());

LogInHandler.java

public class LogInHandler extends ValidateLogin{
DBCollection dbc = new DBCollection();

private String username;
private String greetName;


public void setGreetName(String temp)
{
    greetName = temp;
}
public String getGreetName()
{
    return greetName;
}

public void setUsername(String temp)
{
    username = temp;
}

public String getUsername()
{
    return username;
}

我的login.setUsername(usernameTF.getText());

中有loginWindowGUI

这是我的问题..我无法检索数据库中的First_Name列..它显示为null。并且我的查询中的WHERE条件是否正确?请帮忙..

1 个答案:

答案 0 :(得分:0)

首先,您设置代码的方式会让您进行SQL注入。

query = "SELECT First_Name FROM user_information WHERE Username = '"+login.getUsername()+"'";
rs = stmt.executeQuery(query);
rs.next();
login.setGreetName(rs.getString("First_Name"));

类似下面的内容应该与您的代码完成相同的工作,但保护您免受SQL注入。

query = "SELECT First_Name FROM user_information WHERE Username = ?";
PreparedStatement preparedStatement = dbConnection.prepareStatement(query);
preparedStatement.setString(1, login.getUsername());
ResultSet rs = preparedStatement.executeQuery(query);
rs.next();
login.setGreetName(rs.getString("First_Name"));

我不认为这是导致您的代码无法正常工作的原因。您需要向我们提供更多信息。

您是否尝试使用以下字符串直接查询数据库?

SELECT First_Name FROM user_information WHERE Username = 'A user name that is definitely in the DB';

这应验证您的查询是否正确。如果它工作,那么我将进入Netbeans的调试模式。在下一行之前放置一个断点

rs = stmt.executeQuery(query);

检查是否填充了login.username变量。如果该字段为空,那么您的问题就在那里。