我们想建立一个医疗信息系统。在这种体制下,我们必须购买药品。当用户购买药品时,必须输入条形码编号和购买药品的编号。我们要获取要服用的药物的数量,并将此值添加到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条答案
按热度按时间xn1cxnb41#
string x=“从medicinelist中选择库存,其中条形码='”+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()+“'”;
错误也是如此:)
在结果集中收集“stringx”查询输出,并在“stringsql”中使用它。
s8vozzvw2#
单引号和where之间没有空格。提供并再次运行。
wi3ka0sx3#
在您的查询中
放置+“
'
查询在哪里x
这样地并为干净的查询放置空间。