如何在java中构建动态查询

时间:2015-08-02 12:10:23

标签: java mysql stored-procedures

我有一个有效的动态查询,如下面的MySQL服务器所示,现在我想要的是在我的Java程序中从这个查询中获取结果。我搜索过互联网但无法找到相关的解决方案。请指出我正确的方向。感谢

    SET @sql = NULL;
    SELECT
    GROUP_CONCAT(DISTINCT
       CONCAT(
       'COALESCE(GROUP_CONCAT(DISTINCT case when branch = ''',
       branch,
       ''' then  status  end),''OK'') AS ',
       CONCAT('Branch',branch)
       )
    ) INTO @sql
    FROM Table1;

    SET @sql = CONCAT('SELECT productName, ', @sql, ' 
    FROM Table1 
    GROUP BY productName');

    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    

1 个答案:

答案 0 :(得分:0)

使用PreparedStatement或它的子类型,JAVA中的CallableStatement,并使用正确的数据库连接从您的JAVA代码中调用execute(<QUERY_NAME>)

public void executeProcedure() throws SQLException {
  Connection con = DriverManager.getConnection("jdbc:default:connection");
  CallableStatement cs = this.con.prepareCall("{call <PROCEDURE_NAME>()");
  cs.execute();
}

如果您要将任何参数发送到过程,请在括号中将它们包含为逗号分隔的问号,然后单独设置它们的值。

参考文档here和教程示例here