【发布时间】:2017-02-21 22:52:45
【问题描述】:
我需要制作一个从 mysql 数据库中询问数据的程序来显示它。 (在完整的程序中,它还需要能够创建、更改和删除行,但我已经坚持显示)。 我这样做的方法是与 jdbc 建立连接。 然后执行查询并将其放入结果集中。 然后使用 if 语句通过 resultset.next 和一堆 parsestring 和 settext 方法获取第一行信息。
下一步是下一个和上一个按钮,用于滚动结果集并显示信息。
我的计划是在 actionlistener 中放置一个 rs.next() 并使用新字符串重做文本字段上的所有 setTexts,但我尝试了 100 种不同的感觉,但我一直以一种方式或另一个。
有人还建议我应该尝试将 actionlistener 设置为将 1 添加到变量中。然后将其余代码放在一个类中,我可以用方法调用它,但我不知道如何制作这样的方法。
任何帮助都会令人惊叹。我现在只写了几个星期的代码,我感觉自己有点不知所措。因此,如果还有其他我做错的事情,请告诉我。干杯
代码
package duo.opdracht.info.pagina;
import javax.swing.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.*;
public class DUOOpdrachtInfoPagina extends JFrame {
public static void main(String[] args) {
JFrame frame = new DUOOpdrachtInfoPagina();
frame.setSize(1000, 750);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Optredens");
frame.setContentPane(new Paneel());
frame.setVisible(true);
}
}
class Paneel extends JPanel {
private JButton volgendeKnop, vorigeKnop;
private JTextField bandArtiestVak, starttijdVak, eindtijdVak, podiumVak;
private JLabel bandArtiestLabel, starttijdLabel, eindtijdLabel, podiumLabel;
public Paneel() {
setLayout(null);
volgendeKnop = new JButton("Volgende");
volgendeKnop.addActionListener(new ButtonHandler());
vorigeKnop = new JButton("Vorige");
bandArtiestVak = new JTextField(20);
starttijdVak = new JTextField(20);
eindtijdVak = new JTextField(20);
podiumVak = new JTextField(20);
bandArtiestLabel = new JLabel("Artiest / Band: ");
starttijdLabel = new JLabel("Starttijd: ");
eindtijdLabel = new JLabel("Eindtijd: ");
podiumLabel = new JLabel("Podium: ");
volgendeKnop.setBounds(850, 600, 100, 25);
vorigeKnop.setBounds(50, 600, 100, 25);
bandArtiestVak.setBounds(200, 100, 300, 25);
starttijdVak.setBounds(200, 130, 300, 25);
eindtijdVak.setBounds(200, 160, 300, 25);
podiumVak.setBounds(200, 190, 300, 25);
bandArtiestLabel.setBounds(100, 100, 300, 25);
starttijdLabel.setBounds(100, 130, 300, 25);
eindtijdLabel.setBounds(100, 160, 300, 25);
podiumLabel.setBounds(100, 190, 300, 25);
bandArtiestVak.setEditable(false);
starttijdVak.setEditable(false);
eindtijdVak.setEditable(false);
podiumVak.setEditable(false);
add(volgendeKnop);
add(vorigeKnop);
add(bandArtiestVak);
add(starttijdVak);
add(eindtijdVak);
add(podiumVak);
add(bandArtiestLabel);
add(starttijdLabel);
add(eindtijdLabel);
add(podiumLabel);
// create our mysql database connection
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/DUO_1", "duo1", "duo1");
Statement stmt = null;
String query
= "SELECT BandArtiestNaam, Starttijd, Eindtijd, Podiumnaam FROM optreden";
stmt = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery(query);
if (rs.next()) {
String naam = rs.getString(1);
String stijd = rs.getString(2);
String etijd = rs.getString(3);
String pnaam = rs.getString(4);
bandArtiestVak.setText(naam);
starttijdVak.setText(stijd);
eindtijdVak.setText(etijd);
podiumVak.setText(pnaam);
}
} catch (SQLException e) {
System.out.println(e);
}
}
class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
}
}
}
【问题讨论】:
-
“任何帮助都会令人惊叹。” 就像一个具体的问题一样......
-
@AndrewThompson 是的,我很抱歉,也许我应该换个说法。我添加这句话是为了表明即使是最轻微的提示、技巧、窍门或研究资源都会有所帮助,因此人们不会觉得有必要为我编写整个程序。我只需要一些大方向。
标签: java swing jdbc actionlistener resultset