我是新来的,也是 Java 的初学者。这是我的第一个查询。我正在编写这个 java 程序,它将向数据库添加 5 条记录,这样每次我单击“提交”时,数据库中的顶行被删除,最底行向上移动 1 条记录,最后一行添加一条新记录. 我也将数据库中的文本添加为框架|窗口上的 JLabels。一切都很好。并且数据库也按预期工作。除了当我连续第二次单击提交按钮(我的意思是不关闭窗口或再次运行程序)时,我在文本框中输入的水(“写你的博客”)只需单击即可添加到数据库的 3 条记录中。当我第三次点击它时,它会在数据库中添加 5 条或更多相同的记录。你能帮我解决我的问题吗?自行运行并单击提交按钮三次以了解主窗口中的值如何变化
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class OutLoud {
Connection con;
Statement st;
ResultSet rs;
JFrame Ba = new JFrame("Shout");
JButton Bb = new JButton("Shout");
JFrame Aa = new JFrame("Write Your Blog");
JTextField Ab = new JTextField(100);
JButton Ac = new JButton("Submit");
JLabel Za;
JLabel Zb;
JLabel Zc;
JLabel Zd;
JLabel Ze;
public OutLoud() {
connect();
BlogPage();
Submit();
}
public void connect() {
try {
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
Class.forName(driver);
String db = "jdbc:odbc:db1";
con = DriverManager.getConnection(db);
st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
String sql = "select * from Table1";
rs = st.executeQuery(sql);
} catch (Exception ex) {
}
}
public void BlogPage() {
Ba.setLayout(null);
Ba.setSize(1024, 768);
Ba.setVisible(true);
Bb.setBounds(10, 210, 80, 25);
Ba.add(Bb);
}
public void Submit() {
try {
rs.last();
String s11 = rs.getString("Blog");
Za = new JLabel(s11);
Ba.add(Za);
Za.setBounds(246, 170, 512, 100);
rs.previous();
String s12 = rs.getString("Blog");
Zb = new JLabel(s12);
Ba.add(Zb);
Zb.setBounds(246, 275, 512, 100);
rs.previous();
String s13 = rs.getString("Blog");
Zc = new JLabel(s13);
Ba.add(Zc);
Zc.setBounds(246, 380, 512, 100);
rs.previous();
String s14 = rs.getString("Blog");
Zd = new JLabel(s14);
Ba.add(Zd);
Zd.setBounds(246, 485, 512, 100);
rs.previous();
String s15 = rs.getString("Blog");
Ze = new JLabel(s15);
Ba.add(Ze);
Ze.setBounds(246, 590, 512, 100);
} catch (Exception ex) {
}
Bb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Aa.setLayout(null);
Aa.setSize(512, 384);
Aa.setVisible(true);
Ab.setBounds(21, 64, 450, 200);
Aa.add(Ab);
Ac.setBounds(206, 294, 80, 25);
Aa.add(Ac);
Ac.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String s1 = Ab.getText();
try {
rs.first();
rs.deleteRow();
rs.updateString("Blog", s1);
rs.insertRow();
} catch (Exception ex) {
}
Ba.remove(Za);
Ba.remove(Zb);
Ba.remove(Zc);
Ba.remove(Zd);
Ba.remove(Ze);
Aa.dispose();
Submit();
}
});
}
});
}
public static void main(String[] args) {
new OutLoud();
}
}