按钮不起作用。通过TextFields输入数据

时间:2016-08-27 09:54:00

标签: java database swing

我想通过文本字段输入数据并保存。但按钮不起作用。我在编译时没有错误,甚至在数据库连接中也没有错误。我猜有一个逻辑错误。

public class Database {
    private static JPanel panel;
    private static JLabel sname;
    private static JLabel saddress;
    private static JTextField t;
    private static JTextField t1;

    private static JButton Delete = new JButton("Delete");
    private static JButton update = new JButton("Update");
    private static JButton save = new JButton("Save");
    private static Container c;
    private static Connection con;
    private static Statement st;
    private static ResultSet rs;

    Database() {

        connect();

    }

    public void connect(){

            try{
                System.out.println("Entered");
                System.out.println("Database connection started...");
                con=DriverManager.getConnection("jdbc:ucanaccess://D:\\test.mdb");
                System.out.println("Hello satarted");
                st = con.createStatement();
                System.out.println("Connection ok.");
                while(rs.next())
                {
                    System.out.println(rs.getString("Student Name"));

                    System.out.println(rs.getString("Student Address"));
                    System.out.println();

                }

                catch (SQLException e){
                    System.err.println("Exception: " + e.getMessage());
                }
            }

    public static void main(String[] args) {

        Database gui = new Database();

        JFrame f = new JFrame();
        f.setTitle("School Management System");
        f.setSize(300, 200);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        sname = new JLabel("Student Name");
        t = new JTextField(10);
        saddress = new JLabel("Student Address");
        t1 = new JTextField(10);

        panel = new JPanel();
        panel.add(sname);
        panel.add(t);
        panel.add(saddress);
        panel.add(t1);
        // panel.add(insert);
        panel.add(Delete);
        panel.add(update);
        panel.add(save);
        f.add(panel);

        try {
            rs.next();
            t.setText(rs.getString("Student Name"));
            t1.setText(rs.getString("Student Address"));

        } catch (Exception ex) {

        }

    }

    public void btnAction() {
        save.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                String name = t.getText();
                String address = t1.getText();
                try {
                    rs.moveToInsertRow();
                    rs.updateString("Student Name", name);
                    rs.updateString("Student Address", address);
                    rs.insertRow();

                    rs.close();
                } catch (Exception ex) {

                }
            }

        });
        update.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                String sname = t.getText();
                String saddress = t1.getText();
                try {
                    rs.updateString("Student name", sname);
                    rs.updateString("Student address", saddress);
                    rs.updateRow();

                    JOptionPane.showMessageDialog(null, "Record Updated!");

                } catch (Exception e) {

                }
            }

        });
    }
}

1 个答案:

答案 0 :(得分:2)

  

当我从每个变量中删除静态时。我收到了很多错误

是的,每当你看到一个充满静态变量的类时,你就会知道该类设计不正确。

How to Use Text Field上的Swing教程中的工作示例开始。下载TextDemo代码并了解其工作原理,然后对您的逻辑进行更改。

注意类如何扩展JPanel,其中定义了所有变量和组件,并且不需要任何静态变量。你的代码看起来应该是这样的。

一旦你有一个更好的设计类,你就可以开始调试代码,找出SQL无法正常工作的原因。