请告诉我如何对数据库执行语句。 有 2 个表(很抱歉写错了 - 它只是提供有关列的信息):
承包商(contractor_id, contractor_name, contract_num)
发票(承包商 ID、发票编号、发票日期、发票金额)
“invoices”中的“contractor_id”是“contractors”中“contractor_id”的外键。如果我有来自“承包商”表的“承包商名称”,如何在“发票”表中插入以下数据:发票编号、发票日期、发票金额?
有效的解决方案是:
public void insertInvoiceDataByContractorName(String contractorsName, String invoiceNum, String date, float amount) {
String contrId = null;
try {
preparedStatement = connection.prepareStatement("SELECT contractor_id FROM contractors WHERE contractor_name=?");
preparedStatement.setString(1, contractorsName);
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
contrId = resultSet.getString(1);
}
preparedStatement = connection.prepareStatement("INSERT INTO invoices VALUES(?, ?, ? ,?)");
preparedStatement.setString(1, contrId);
preparedStatement.setString(2, invoiceNum);
preparedStatement.setString(3, date);
preparedStatement.setFloat(4, amount);
preparedStatement.execute();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (preparedStatement != null) {preparedStatement.close();}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
我不知道如何通过仅使用一条语句来使它更正确和更简单。提前感谢您的建议。
最佳答案
使用
INSERT INTO invoices SELECT contractor_id, ?, ?, ? FROM contractors WHERE contractor_name=?
假设您的承包商名称是唯一的,这将插入 1 行
关于java - 插入...值...选择。如何使用 INSERT 进行嵌套语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23636059/