有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JBoss下的java链MySQL语句

编辑:链接的答案不使用LAST_INSERT_ID,仍在寻找答案

我正在使用JBoss并通过数据源(JNDI)获取连接

如何一次链接和执行多个SQL语句,其中第二个语句取决于第一个语句的输出(LAST_INSERT_ID()

preparedStatement = connection.prepareStatement("INSERT INTO product(name) VALUES(?); INSERT INTO brand_product(brand_id, product_id) VALUES(?, LAST_INSERT_ID())", Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, name);
preparedStatement.setInt(2, brandId);

if(preparedStatement.executeUpdate() != 0) {
    try (ResultSet generatedKeys = preparedStatement.getGeneratedKeys()) {
        if(generatedKeys.next()) {
            product = new Product(generatedKeys.getInt(1), name);
        }
    }
};

请注意:我也在使用中生成了键,第二个表没有生成任何键,因为它是一个联接表


共 (1) 个答案

  1. # 1 楼答案

    1. 配置JBoss以允许在管理界面中进行多个查询。在添加属性之前,先单击“禁用”。(在数据源下)

      propertyName:allowMultiQueries属性值:true

    2. 生成的键不会有问题,因为第二个查询没有自动递增主键