如何将输入数据添加到 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" 中使用它。
我们要创建一个医疗信息系统。在这个系统中,我们必须购买药品。用户买药时,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" 中使用它。