Java准备的语句语法,用于连接配置单元服务器以描述表

Java准备的语句语法,用于连接配置单元服务器以描述表,java,jdbc,hive,prepared-statement,describe,Java,Jdbc,Hive,Prepared Statement,Describe,正在尝试建立到配置单元的连接并描述一个表 enter code here String queryTable= "dummydb.dummy_table"; String driverName = "org.apache.hive.jdbc.HiveDriver"; try { Class.forName(driverName); } catch (ClassNotFoundException ex) {

正在尝试建立到配置单元的连接并描述一个表

enter code here
    String queryTable= "dummydb.dummy_table";
    String driverName = "org.apache.hive.jdbc.HiveDriver";
    try {
        Class.forName(driverName);
    } catch (ClassNotFoundException ex) {
        ex.printStackTrace();
    }
    //connect hive server (no issue in that)
    String hiveUrl = PropertyLoader.getInstance("staging").getDruidHive();
    Connection con = DriverManager.getConnection(hiveUrl, "hadoop", "");

    ##Working code is below:
         String sql = "describe formatted dummydb.dummy_table" ;
         PreparedStatement pstmt = con.prepareStatement(sql);
         ResultSet rs1 = pstmt.executeQuery();

    ##But I try to use this which is not working:

        String queryTable="dummydb.dummy_table"
        String sql1 = "describe formatted ?" ;
        PreparedStatement pstmt = con.prepareStatement(sql1);
        pstmt.setString(1, queryTable);
        ResultSet rs1 = pstmt.executeQuery();
错误
org.apache.hive.service.cli.HiveSQLException:编译语句时出错:失败:ParseException行1:19无法识别descripe语句中“格式化的”“dummydb.dummy_表”“附近的输入。

这是预期行为,无法将表名作为绑定参数传递。这不仅适用于
descripe
,而且适用于所有语句,不仅适用于表名,也适用于列名。只有值可以参数化。在这种情况下,如果希望具有动态行为或使用类似于Oracle中的
DBA\u TAB\u COLUMNS
的字典表,则必须连接语句(不确定配置单元中的名称)。感谢@MarmiteBomber提供快速而好的回答。你能告诉我如何解决声纳问题吗?因为这个问题(没有参数化)。对不起@Manish,你有哪个声纳问题?