Добавление данных в базу данных MySQL из двух разных классов с использованием GUI

#java #mysql #user-interface

#java #mysql #пользовательский интерфейс

Вопрос:

У меня есть простой графический интерфейс приложения для работы, где есть один класс, который позволяет пользователю вводить свою личную информацию, и другой класс, который позволяет пользователю вводить историю своей работы, и я хочу сохранить всю информацию в базе данных. Я создал базу данных MySQL и успешно подключился, но когда я вставляю в нее что-либо, это показывает, что значения в базе данных равны нулю. Я не уверен, почему. Вот мой код до сих пор:

Класс базы данных:

 package database;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class ConnectDB 
{
    private String name, address, city, state, email, employer, position, start, end, duties, reason, DOB;
    private int phoneNum, zipCode, employerPhonNum;

    Connection conn = null; 

    /*
    public static void main(String [] args) throws Exception
    {
        ConnectDB db = new ConnectDB();
        db.getConnection();
    }
*/

    public boolean getConnection() throws Exception
    {
        boolean connected = false;

        try
        {
            final String driver = "com.mysql.jdbc.Driver";
            final String url = "jdbc:mysql://localhost:3306/JobApplication"; 
            final String username = "root";
            final String password = "Nasim8055";
            Class.forName(driver); 

            conn = DriverManager.getConnection(url, username, password);
            System.out.println("Connected");
            connected = true;
        }
        catch(Exception e)
        {
            System.out.println(e);
            connected = false;
        }

        return connected;
    }

    /*
    * This method retrieves all the basic information and stores it         
    */
    public void getBasicInfo(String name, String address, String city, String state, int zip, int phoneNum,
            String email, String DOB)
    {
        this.name = name;
        this.address = address;
        this.city = city;
        this.state = state;
        this.zipCode = zip;
        this.phoneNum = phoneNum;
        this.email = email;
        this.DOB = DOB;
    }

    /*
    * This method retrieves info from employment history
    */  
    public void getEmploymentInfo(String employer, String position, String start, String end, String duties, String reason, int phoneNum)
    {
        this.employer = employer;
        this.position = position;
        this.start = start;
        this.end = end;
        this.duties = duties;
        this.reason = reason;
        this.employerPhonNum = phoneNum;
    }

    public void insertDB()
    {
        Statement stmt = null;
        int ID = 1;
        try 
        {
            if(getConnection()) // if there is a connection     
            {
                stmt = conn.createStatement();

                String sql = "INSERT INTO applicants "  
                        "VALUES ('" ID "', '" name "', '" address "', '" city "', '" state "', '" zipCode "', '" phoneNum "', '" email "', '" employer "', "
                                  "'" position "', '" start "', '" end "', '" employerPhonNum "', '" duties "', '" reason "')";         
                stmt.executeUpdate(sql);
            }
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEmployer() {
        return employer;
    }

    public void setEmployer(String employer) {
        this.employer = employer;
    }

    public String getPosition() {
        return position;
    }

    public void setPosition(String position) {
        this.position = position;
    }

    public String getStart() {
        return start;
    }

    public void setStart(String start) {
        this.start = start;
    }

    public String getEnd() {
        return end;
    }

    public void setEnd(String end) {
        this.end = end;
    }

    public String getDuties() {
        return duties;
    }

    public void setDuties(String duties) {
        this.duties = duties;
    }

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public int getPhoneNum() {
        return phoneNum;
    }

    public void setPhoneNum(int phoneNum) {
        this.phoneNum = phoneNum;
    }

    public int getZipCode() {
        return zipCode;
    }

    public void setZipCode(int zipCode) {
        this.zipCode = zipCode;
    }

    public int getEmployerPhonNum() {
        return employerPhonNum;
    }

    public void setEmployerPhonNum(int employerPhonNum) {
        this.employerPhonNum = employerPhonNum;
    }

    public String getDOB() {
        return DOB;
    }

    public void setDOB(String DOB) {
        this.DOB = DOB;
    }
}
  

Класс basicInfo исключил какой-то нерелевантный метод:

 public class BasicInfoWindow extends JPanel
{
    private JTextField txtName, txtAddress, txtCity, txtState, txtZipCode, txtPhoneNumber, txtEmail;
    private JComboBox cbDate, cbYear, cbMonth;
    private JLabel labelName, labelAddress, labelCity, labelState, labelZipCode, labelPhoneNumber, labelEmail, labelDOB;
    private JButton btnClear;

    public BasicInfoWindow()
    {
        createView();
    }

    private void createView()
    {
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        add(panel);

        northPanel(panel);

        centerPanel(panel);

        southPanel(panel);
    }


    public void writeToDB()
    {
        ConnectDB db = new ConnectDB();
        String DOB = cbMonth.getSelectedItem()   " "   cbDate.getSelectedItem()   " "   cbYear.getSelectedItem();

        db.getBasicInfo(txtName.getText(), txtAddress.getText(), txtCity.getText(), txtState.getText(), 
                Integer.parseInt(txtZipCode.getText()), Integer.parseInt(txtPhoneNumber.getText()), txtEmail.getText(), DOB);
    }
  

Класс истории занятости исключил нерелевантные методы

 public class EmploymentHistoryWindow extends JPanel
{
    private JButton btnClear, btnNext, btnPrevious, btnAddMoreEmployment;
    private JLabel labelEmployer, labelPosition, labelStart, labelEnd, labelDuties,labelReason, labelPhoneNum;
    private JTextField txtEmployer, txtPosition, txtStart, txtEnd, txtPhoneNum;
    private JTextArea areaDuties, areaReason;

    private JTabbedPane tabbedPane = new JTabbedPane();

    public EmploymentHistoryWindow()
    {
        createView();
    }

    private void createView()
    {
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());

        tabbedPane.add("Employment", panel);

        add(tabbedPane);

        northPanel(panel);

        centerPanel(panel);

        southPanel(panel);
    }

    public void writeToDB()
    {
        ConnectDB db = new ConnectDB();
        db.getEmploymentInfo(txtEmployer.getText(), txtPosition.getText(), txtStart.getText(), txtEnd.getText(), 
                areaDuties.getText(), areaReason.getText(), Integer.parseInt(txtPhoneNum.getText()));
    }
  

Комментарии:

1. Есть ли исключение, связанное или просто не видите значения в таблице?

2. Значения в таблице показывают null, исключений нет

3. Это может быть запрос, который вы пытаетесь выполнить, возможно, он может быть искажен. Не могли бы вы распечатать его, чтобы увидеть его?

4. Пожалуйста, ознакомьтесь с Java Prepareds, потому что ваши запросы выглядят как полностью глючный старый PHP-код, включая sql-инъекции

5. Он выводит все null. Поэтому я предполагаю, что когда я передаю данные из класса в класс базы данных, они передаются неправильно. Я не уверен, как это решить.