gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 21:00:07 25 4
gpt4 key购买 nike

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

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

这是我将数据库中的项目添加到列表中的位置:仅供引用:数据库代码适用于从数据库中获取简单的字符串,但在尝试将字符串放入列表中时,我只收到严重的 NULL 错误。

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));

最佳答案

错误的代码。

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

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

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

您应该在finally block 中关闭Statement

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

关于数据库中的 Java 项目不会添加到我创建的列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37305000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com