如何将输入数据添加到 SQL 值?

How to add input data to SQL value?

我们要创建一个医疗信息系统。在这个系统中,我们必须购买药品。用户买药时,he/she需要输入条码号和买药号。我们要获取要服用的药物数量并将此值添加到 SQL table。但是我们有一个错误。

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 table

这是我的代码: 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);}
        }

});

...

      +"'where Barcode='"+ BarcodeField.getText()+"'";

单引号和where之间没有space。提供它并再次 运行。

在您的查询中

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

像这样把+'where查询放在x后面

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

并为干净的查询放置空格。

字符串 x = "Select Stock from medicinelist where Barcode='" + BarcodeField.getText()+"'";

字符串 sql = "Update medicinelist set Stock='" +Integer.parseInt(NumberField.getText())+x +"'where Barcode='"+ BarcodeField.getText()+"'";

所以字符串 sql 变成

字符串 sql = "Update medicinelist set Stock='" +Integer.parseInt(NumberField.getText())+"Select Stock from medicinelist where Barcode='" + BarcodeField.getText()+"'" +"'where Barcode='"+ BarcodeField.getText()+"'";

错误也是如此:)

在结果集中收集 "string x" 查询输出并在 "string sql" 中使用它。