如何使用数据库信息对标签进行估价



我想使用多个标签在数据库表中显示信息。

每个人的这些信息都是唯一的,并且与表中的每一行都相关。

登录程序后,每个人都应该能够看到自己的信息,并通过登录个人资料页面进行更正。

对于表中的每一列,我都提供了一个标签,它根据该列显示每个人的信息。

我写了以下代码来在标签上显示数据库数据,但当我运行它时,什么都不显示!

我也不知道是使用ResultSet及其方法,还是使用Statement及其方法来获取要在Label中使用的字符串。

在此处输入代码

private void displayProfileDetails(String resultSetQuery, Label label) {

DatabaseConnection connectToDrugDatabase = new DatabaseConnection();

try (

Connection connectionDB = connectToDrugDatabase.getConnection();

Statement statement = connectionDB.createStatement();

ResultSet resultSet = statement.executeQuery(resultSetQuery);) {

while (resultSet.next()) {
label Text
if (resultSet.next()) {
baseMessageLabel
Platform.runLater(() -> {
label.setText(resultSet.toString());
} 
); 
} else {
label.setText("null");
} 
} 
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
} 
} 

private void profileDetails() {

String firstNameDisplayQuery = "SELECT * FROM APP.users WHERE USERNAME = '" + userID + "'";
String lastNameDisplayQuery = "SELECT * FROM APP.users WHERE FIRSTNAME = '" + userID + "'";

String userNameDisplayQuery = "SELECT * FROM APP.users WHERE LASTNAME = '" + userID + "'";

String passwordDisplayQuery = "SELECT * FROM APP.users WHERE PASSWORD = '" + userID + "'";

String EmailDisplayQuery = "SELECT * FROM APP.users WHERE PHONENUMBER = '" + userID + "'";

String AddressDisplayQuery = "SELECT * FROM APP.users WHERE ADDRESS = '" + userID + "'";

String phoneNumberDisplayQuery = "SELECT * FROM APP.users WHERE JOB = '" + userID + "'";

String jobDisplayQuery = "SELECT * FROM APP.users WHERE EMAIL = '" + userID + "'";

displayProfileDetails(firstNameDisplayQuery, firstNameLabel);

displayProfileDetails(lastNameDisplayQuery, lastNameLabel);

displayProfileDetails(userNameDisplayQuery, userNameLabel);

displayProfileDetails(EmailDisplayQuery, emailLabel);

displayProfileDetails(AddressDisplayQuery, addressLabel);

displayProfileDetails(phoneNumberDisplayQuery, phoneNumberLabel);

displayProfileDetails(jobDisplayQuery, JobLabel);

displayProfileDetails(passwordDisplayQuery, passwordLabel);
}

当您调用resultSet.next((时,您将光标向前移动。然后在if语句中再次调用resultSet.next((,并在没有从第一条记录中获取值的情况下再次向前移动;

删除if语句,因为如果while循环正在运行,则光标处已经存在有效记录。

此外,resultSet.toString((不会用您的数据填充字段。您需要使用rs.getString(index(;其中index是刚得到的列的列索引(从1开始(。

这里有一个你可以做什么的例子。

// this method returns all columns of a row in ordinal() order. If username is the first column of your table then object[0] will contain a String with that data. etc.      
private Object[] getUserDataByUserName(Connection conn, String username) throws SQLException {

try (PreparedStatement ps = conn.prepareStatement("select * from APP.USER where username = ?")) {
ps.setString(1, username);
try (ResultSet results = ps.executeQuery()) {
if (results.next()) {
Object[] row = new Object[results.getMetaData().getColumnCount()];
for (int i = 0; i < row.length; i++) {
// arrays start at pos 0, but result sets start at column 1 
row[i] = results.getObject(i + 1);
}
return row;
}

}
return null;

}

}

最新更新