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

时间:2018-12-27 07:42:54

标签: java mysql jframe

我们要创建一个医疗信息系统。在这个系统中,我们必须购买药品。当用户购买药品时,他/她必须输入条形码编号和所购买药品的编号。我们要服用一些药物,并将此值添加到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 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);}
        }

});

...

3 个答案:

答案 0 :(得分:0)

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

单引号和位置之间没有空格。提供它并再次运行。

答案 1 :(得分:0)

在您的查询中

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

将+“ '放在x之后的查询中,像这样

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

,还放置空格以进行干净查询。

答案 2 :(得分:0)

String x =“从医学列表中选择股票,其中Barcode ='” + BarcodeField.getText()+“'”;

String sql =“ Update medicinelist set Stock ='” + Integer.parseInt(NumberField.getText())+ x                 +“'其中Barcode ='” + BarcodeField.getText()+“'”;

因此字符串sql变为

String sql =“ Update medicinelist set Stock ='” + Integer.parseInt(NumberField.getText())+“从Medicinelist中选择库存,其中Barcode ='” + BarcodeField.getText()+“'” +“'其中Barcode ='“ + BarcodeField.getText()+”'“;

错误也是如此:)

在结果集中收集“字符串x”查询输出,并在“字符串sql”中使用它。