私はここに新しく、Javaの初心者です。これが私の最初のクエリです。「送信」をクリックするたびにデータベースの一番上の行が削除され、一番下の行が1レコード上にシフトされ、新しいレコードが最後の行に追加されるように、データベースに5つのレコードを追加するこのJavaプログラムを書いています. また、フレーム|ウィンドウのJLabelsとしてデータベースにテキストを追加しています。これまではすべて問題ありません。データベースも希望どおりに機能しています.ただし、送信ボタンを2回続けてクリックすると(ウィンドウを閉じたり、プログラムを再度実行したりせずに)、テキストボックスに入力するたびに(「ブログを書いてください」)ワンクリックでデータベースの 3 つのレコードに追加されます。3回目にクリックすると、データベースに5つ以上の同じレコードが追加されます。私の質問を手伝ってくれませんか。自分で実行し、送信ボタンを 3 回クリックして、メイン ウィンドウで値がどのように変化するかを確認します。
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();
}
}