数据库中的Java项目不会添加到我创建的列表中

时间:2016-05-18 16:14:29

标签: java mysql list label fxml

所以我正在尝试创建一个程序,向用户显示食谱。为此,我想从我的数据库中获取项目并将它们放入列表中,但出于某种原因,当我进入我想要将列表中的变量添加到我们的FXML标签的屏幕时,我得到了SEVERE NULL错误。

我在这里创建列表     List<String> stap = new ArrayList<>(); List<String> stapOmschrijving = new ArrayList<>(); List<String> stapAfbeelding = new ArrayList<>();

这是我将数据库中的项添加到列表中的地方:仅供参考:数据库代码用于从数据库中获取简单的字符串,但在尝试将字符串放入列表时,我只收到SEVERE NULL错误。 / p>

try {

        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection(DB_URL, USER, PASS);

        stmt = conn.createStatement();
        String sql;
        sql = "SELECT * FROM receptStap WHERE recept_receptNaam = " + dagGerecht ; 

        try (ResultSet rs = stmt.executeQuery(sql)) {

            stap.clear();
            stapOmschrijving.clear();
            stapAfbeelding.clear();

            while(rs.next()){
                stap.add(rs.getString("stap"));
                stapOmschrijving.add(rs.getString("stapOmschrijving"));
                stapAfbeelding.add(rs.getString("stapAfbeelding"));
            }
        }
        stmt.close();
        conn.close();

最后,我将这些项目添加到适当的FXML标签(在为此fxml文件制作的类中)

public class StapReceptenController implements Initializable {

    Connectie connectie = new Connectie();
    Statements statement = new Statements();
@FXML
private Label omschrijving;
@FXML
private ImageView afbeelding;
@FXML
private Label nummer;

/**
 * Initializes the controller class.
 */
@Override
public void initialize(URL url, ResourceBundle rb) {
    connectie.maakVerbinding();
    statement.haalReceptenOp();

    int counter = 0;
    nummer.setText(statement.stap.get(counter));
    omschrijving.setText(statement.stapOmschrijving.get(counter));

1 个答案:

答案 0 :(得分:0)

错误代码。

为什么有三个Strings列表?更好的想法是将这三个项封装到一个有意义的类中,并从查询中返回该类的List

您应该使用PreparedStatement并绑定参数,而不是连接字符串来创建SQL。

您应该创建List个对象并从此方法返回。

您应该在finally块中关闭Statement

您应该传入Connection并将其从游泳池中取出。