2014-03-18 4 views
1

У меня есть эти кодыКак я могу получить имя в моей базе данных?

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 в моей базе данных .. он отображает нуль. и верно ли мое условие WHERE в запросе? помогите пожалуйста.

+0

+1 для форматирования .. не видел такой чистый, отформатированный код в днях. – TheLostMind

+0

вы можете его отладить и посмотреть, что в login.username и убедиться, что в базе данных? –

ответ

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. Если это поле имеет значение NULL, то ваша проблема есть.

Смежные вопросы