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