我创建了一个基于MariaDB的购物清单。 我得到了一个完整运行的Java控制台输入/输出程序。 现在,我正在尝试构建GUI。此类“ WindowList”是我的构造函数,并在main.java中使用“ WindowList showlist = new WindowList();”实现。 如果我从MariaDB查询数据以通过JLabel或JTextArea在JFrame中将其打印出来,那么我只会得到列表的最后一点。
我是Java和程序设计的新手。预先感谢。
package shoppinglist;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.*;
public class WindowList {
//Driver für MariaDB
static final String JDBC_DRIVER = "org.mariadb.jdbc.Driver";
//url samt port von der MariaDB
static final String DB_URL = "xxx";
//Datenbankname
static final String DB_DB = "xxx";
// Database credentials
static final String USER = "xxx";
static final String PASS = "xxx";
public WindowList() {
Connection conn = null;
Statement stmt = null;
JFrame listFrame = new JFrame();
listFrame.setSize(200,200);
listFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//JLabel derText = new JLabel();
JTextArea textfeld = new JTextArea(40, 40);
listFrame.getContentPane().add(textfeld);
listFrame.setVisible(true);
try {
//Verbindung zu MariaDB funktioniert
conn = DriverManager.getConnection(DB_URL+DB_DB, USER, PASS);
stmt = conn.createStatement();
//Query muss hier genau so hinterlegt sein wie in der DB selbst
String sql = "Select * from shoplist";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
textfeld.setText("- " + rs.getString("Item"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}