Вставьте только идентификатор при выборе имени и мультизапроса - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь вставить Назначение Доктора при выборе имени Доктора, он будет вставлять ID только в базу данных таблицы и обновлять Доктора Доступность до 0, вот мой код

try{
        String sql = "INSERT INTO Appointment_Table (Doc_ID, Department_ID, SchedDate, Patient_ID) VALUES\n" +
                     "( (SELECT ID from User_Table where First_Name = ?), (SELECT Department_ID from User_Table WHERE First_Name = ?), ?, (Select Patient_ID from Patient_Records where First_Name = ?));";
        pst = conn.prepareStatement(sql);
        rs = pst.executeQuery();
        pst.setString(1, (String) DoctorNames.getSelectedItem());
        pst.setString(2, (String) DoctorNames.getSelectedItem());
        String add1 = ((JTextField)jDateChooser1.getDateEditor().getUiComponent()).getText();
        String add2 = DoctorTime.getText();
        pst.setString(3, add1+"-/-"+add2+"-PM");
        pst.setString(4, (String) DoctorPatient.getSelectedItem());


        try{
            String sql1 = "Update User_Table set Availability = 0  where First_Name LIKE ?";
            pst = pst = conn.prepareStatement(sql1);
            rs = pst.executeQuery();
            pst.setString(1, (String) DoctorNames.getSelectedItem());
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
            e.printStackTrace();
        }

    }catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
        e.printStackTrace();
    }finally {
        try {
            rs.close();
            pst.close();
        }catch(Exception e){

        }
    }

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

добавьте 3 поля со списком в форму, один для Doc_ID и один для Department_ID, а другой для Patient_ID

, сделайте этот класс

class ComboItem
{
    private String key;
    private String value;

    public ComboItem(String key, String value)
    {
        this.key = key;
        this.value = value;
    }

    @Override
    public String toString()
    {
        return key;
    }

    public String getKey()
    {
        return key;
    }

    public String getValue()
    {
        return value;
    }
}

Добавьте ComboItem в ваш comboBox.

comboBox.addItem(new ComboItem("doctor name ", "Doc_ID"));
comboBox.addItem(new ComboItem("doctor 2 name ", "Doc_ID 2"));
comboBox.addItem(new ComboItem("doctor 3 name ", "Doc_ID 3"));

Всякий раз, когда вы получаете выбранный элемент.

Object item = comboBox.getSelectedItem();
String value = ((ComboItem)item).getValue();

редактировать ваш SQL

INSERT INTO Appointment_Table (Doc_ID, Department_ID, SchedDate, Patient_ID) VALUES (combo_Doc_ID_value,combo_Department_ID_value,?,combo_Patient_ID_value)
0 голосов
/ 24 сентября 2018

попробуйте добавить LIMIT 0,1 после SELECT так:

INSERT INTO Appointment_Table (Doc_ID, Department_ID, SchedDate, Patient_ID) VALUES 
( (SELECT ID from User_Table where First_Name = ? LIMIT 0,1 ), (SELECT Department_ID from User_Table WHERE First_Name = ? LIMIT 0,1 ), ?, (Select Patient_ID from Patient_Records where First_Name = ? LIMIT 0,1 ));

для СУБД MySql для SQL Server используйте ключевое слово Top 1

SELECT TOP 1 ID from User_Table where First_Name = ?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...