繁体   English   中英

使用Java NetBeans中的插入查询在MS数据库中插入数据

[英]Inserting data in ms database using insert query in java Netbeans

我在java netbeans中创建了一个基于GUI的酒店管理系统,该系统与Ms Access数据库连接。 在数据库中,我有一个名为“ RoomInfo”的表。

我有两个名为Room和AddRoom的类。 Room类包含房间的所有属性以及将新房间添加到数据库中的add方法。 AddRoom类具有前端表单,用户可以在其中为房间类的属性在JTextFields中输入值。

当我尝试向数据库中添加新房间时,我从AddRoom类的Room类中调用add_room方法。 问题是,当我使用gettext方法从JTextFields获取文本时,它不是从JTextFields中读取文本。 我在add_room函数中有一个if语句,以显示一条消息,如果任何字段都为空,则“任何字段都不能为空”。 每当我尝试添加新房间时,都会弹出此消息,提示“任何字段都不能为空”。

需要帮助确定问题。

房间等级

public class Room {

    String roomno;
    String reserved;
    String category;
    String airconditioned;
    String bedtype;
    String rent;

    Connection con;
    PreparedStatement ps;
    ResultSet rs;

    AddRoom adr = new AddRoom();

    public Room()
    {
        roomno = "";
        reserved = "";
        category = "";
        airconditioned = "";
        bedtype = "";
        rent = "";
        make_connection();
    }

    public void make_connection()
    {
        try{
            String driver = "net.ucanaccess.jdbc.UcanaccessDriver";
            Class.forName(driver);
            String login = "jdbc:ucanaccess://C:\\MsDatabase\\EmployeeDB.accdb";
            con = DriverManager.getConnection(login);

        }catch(Exception ex){ System.out.println(ex);}
    }

    public void add_room()
    {
        try{
            if("".equals(adr.get_jtextfield1().getText())||"".equals(adr.get_jtextfield2().getText())||
              "".equals(adr.get_jtextfield3().getText())||"".equals(adr.get_jtextfield4().getText())||
              "".equals(adr.get_jtextfield5().getText())||"".equals(adr.get_jtextfield6().getText()))
            {
                 JOptionPane.showMessageDialog(null, "None of the fields can be left empty");
            }
            else
            {
               roomno = adr.get_jtextfield1().getText();
               reserved = adr.get_jtextfield2().getText();
               category = adr.get_jtextfield3().getText();
               airconditioned = adr.get_jtextfield4().getText();
               bedtype = adr.get_jtextfield5().getText();
               rent = adr.get_jtextfield6().getText();

               String sql = "INSERT INTO RoomInfo(RoomNumber,Reserved,RoomCategory,AirConditioned,BedType,RentPerDay)"
                    + "VALUES(?,?,?,?,?,?)";

               ps = con.prepareStatement(sql);

               ps.setInt(1, new Integer(roomno));
               ps.setString(2, reserved);
               ps.setString(3, category);
               ps.setString(4, airconditioned);
               ps.setString(5, bedtype);
               ps.setInt(6, new Integer(rent));
               ps.executeUpdate();
               JOptionPane.showMessageDialog(null, "Room Added Successfully");
            }

        }catch(Exception ex){
            JOptionPane.showMessageDialog(null, "Input in Room Number and "
                    + "Rent Per Day should be a number");
        }
    }

}

AddRoom类

public class AddRoom extends javax.swing.JFrame {

    public AddRoom() {
        initComponents();
        make_connection();
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        Room objr = new Room();
        objr.add_room();
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        AdminHome admh = new AdminHome();
        admh.setVisible(true);
        dispose();
    }                                        

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new AddRoom().setVisible(true);
            }
        });
    }

    public JTextField get_jtextfield1()
    {
        return jTextField1;
    }

    public JTextField get_jtextfield2()
    {
        return jTextField2;
    }

    public JTextField get_jtextfield3()
    {
        return jTextField3;
    }

    public JTextField get_jtextfield4()
    {
        return jTextField4;
    }

    public JTextField get_jtextfield5()
    {
        return jTextField5;
    }
    public JTextField get_jtextfield6()
    {
        return jTextField6;
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    private javax.swing.JTextField jTextField5;
    private javax.swing.JTextField jTextField6;
    // End of variables declaration                   
}

问题是这样的:

AddRoom adr = new AddRoom();

这将与主窗口分开创建一个新的AddRoom 最简单的解决方案是将其作为参数传递。 因此,删除该行并更改

public void add_room()

public void add_room(AddRoom addr)

然后在AddRoom

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    Room objr = new Room();
    objr.add_room(this);
}  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM