Как запросить таблицу SQLite на основе 2 аргументов? - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь запросить мою таблицу SQLite на основе 2 столбцов, которые равны значениям jList и jtextfield. Я установил ListSelectionListener для ожидания, когда «дата» выбирается из списка. Я знаю, что мой код неверен для оператора select, но я не могу найти никакой другой онлайн-помощи, в которой есть пример, к которому я могу обратиться. Любая помощь будет отличной! Спасибо

Базовый пример здесь:

listJobCostDates = new JList();
        listJobCostDates.addListSelectionListener(new ListSelectionListener() {
            public void valueChanged(ListSelectionEvent evt) {
                String jobNumber = txtJobNumber.getText().toString();
                Object dateNumber = listJobCostDates.getSelectedValue();

                String sql = "SELECT * FROM JOBCOSTS where Job_Number,Date='" +jobNumber+"'" AND Date =+dateNumber+"'"  ;

                try {

                    pst=conn.prepareStatement(sql);
                    rs = pst.executeQuery();
                    while(rs.next()) {
                    tblDayJobCosts.setModel(DbUtils.resultSetToTableModel(rs));

                    }

                }catch (Exception e) {
                    JOptionPane.showMessageDialog(null, e);

                }
            }
        });

1 Ответ

0 голосов
/ 24 октября 2019

Ваше состояние не является правильным

 String sql = "SELECT * FROM JOBCOSTS where Job_Number = '" +jobNumber+ "' and Date ='"+dateNumber+"'"  

Но выше склонны к инъекции sql, используйте Prepared Statements вместо.

 pst=conn.prepareStatement("SELECT * FROM JOBCOSTS where Job_Number = ? and Date = ?);
 pst.setString(1, jobNumber);
 pst.setString(2, dateNumber);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...