Как добавить входные данные в значение SQL? - PullRequest
0 голосов
/ 27 декабря 2018

Мы хотим создать медицинскую информационную систему.В этой системе мы должны покупать лекарства.Когда пользователь покупает лекарство, он / она должен ввести номер штрих-кода и номер покупающего лекарства.Мы хотим взять количество принимаемых лекарств и добавить это значение в таблицу SQL.Но у нас есть ошибка.

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '10013''where Barcode='10013'' at line 1

Таблица SQL

Вот мой код: BuyMedicine.java

...

BarcodeField = new JTextField();
    BarcodeField.setBounds(130, 26, 294, 21);
    contentPane.add(BarcodeField);
    BarcodeField.setColumns(10);

    NumberField = new JTextField();
    NumberField.setBounds(130, 86, 294, 21);
    contentPane.add(NumberField);
    NumberField.setColumns(100);

    JButton btnBuy = new JButton("Buy");
    btnBuy.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root","");
                Statement stmt = con.createStatement();
                String x = "Select Stock from medicinelist where Barcode='" + BarcodeField.getText()+"'";
                PreparedStatement preparedStmt2 = con.prepareStatement(x);
                preparedStmt2.execute();
                String sql = "Update medicinelist set Stock='" +Integer.parseInt(NumberField.getText())+x
                +"'where Barcode='"+ BarcodeField.getText()+"'";
                PreparedStatement preparedStmt = con.prepareStatement(sql);
                preparedStmt.executeUpdate();


                JOptionPane.showMessageDialog(null, "Done!!!");


                con.close();

            }catch(Exception e) { System.out.print(e);}
        }

});

...

Ответы [ 3 ]

0 голосов
/ 27 декабря 2018

В вашем запросе

 '" +Integer.parseInt(NumberField.getText())+ x +"'where  

Поставьте + "' там, где запрос стоит x, как это

 '" +Integer.parseInt(NumberField.getText())+"'"+ x +" where

, а также оставьте пробелы для чистого запроса.

0 голосов
/ 27 декабря 2018

String x = "Выбрать запас из списка лекарств, где Barcode = '" + BarcodeField.getText () + "'";

И

String sql = "Обновить список лекарств Stock = '"+ Integer.parseInt (NumberField.getText ()) + x +" ', где Barcode =' "+ BarcodeField.getText () +" '";

Таким образом, строка sql становится

Stringsql = "Обновить список лекарств Stock = '" + Integer.parseInt (NumberField.getText ()) + "Выбрать запас из списка лекарств, где Barcode ='" + BarcodeField.getText () + "'" + "', где Barcode = '"+ BarcodeField.getText () + "'";

И ошибка тоже:)

Соберите выходные данные запроса "string x" в наборе результатов и используйте его в "string sql".

0 голосов
/ 27 декабря 2018
      +"'where Barcode='"+ BarcodeField.getText()+"'";

Между одинарной кавычкой и , где , нет пробела.Обеспечьте это и бегите снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...