【问题标题】:Passing hexadecimal hash value to JDBC query将十六进制哈希值传递给 JDBC 查询
【发布时间】:2014-08-26 07:55:35
【问题描述】:

我的 MYSQL 数据库中有一个十六进制表(md5 哈希值),我在一个 Query1 中选择值迭代结果集 RS1,现在我需要从另一个表中获取数据,该表在键列中有这个哈希值..执行相同操作时出现 sql 语法错误:

String targetQuery = "select hashValue from targettbl ";
        String sourceQuery = "select st.* from sourcetbl st where seqNo in" +
                "(select seqNo from sourcetblkey where hashValue in (?)" ; 
        try {
            stmt1 = conn.createStatement();
            stmt2 = conn.prepareStatement(sourceMD5Query);
            rs1 = stmt1.executeQuery(targetMd5Query);

            while(rs1.next())
            {
                stmt2.setString(1, rs1.getString(1));
                rs2 = stmt2.executeQuery(sourceQuery);
                ResultSetMetaData rsmd = rs2.getMetaData();
                int columnsNumber = rsmd.getColumnCount();
                while(rs2.next())
                {
                    System.out.println("Source Row");
                    for(int i=1;i<columnsNumber;i++)
                        {
                        System.out.println(""+rs2.getString(i));
                        }
                }
            } 

错误: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '' 附近使用正确的语法

请帮忙

【问题讨论】:

    标签: sql jdbc hex md5 resultset


    【解决方案1】:

    您的声明末尾有一个)missing。改成这样:

    String sourceQuery = "select st.* from sourcetbl st where seqNo in" +
                    "(select seqNo from sourcetblkey where hashValue in (?))" ; 
    

    【讨论】:

    • 除此问题外,您不能使用接受查询字符串的执行方法之一执行PreparedStatement(这些仅适用于普通Statement)。 OP需要使用executeQuery()(无参数)
    • ) 是一个错字,已更正。感谢 executeQuery() 方法相同..但回到问题:我应该如何在我的查询中传递一个哈希十六进制值
    • @user2176576 它是一个字符串,因此您可以按原样使用它。
    • 现在没有得到 SQLException..但是我没有得到结果..哈希值是在第一个(外部)查询中从数据库中获取的 MD5 哈希值
    • @user2176576 为什么你使用IN?如果它只有一个值,您可以使用等号。您可以检查该值是否为预期值并在 d db 浏览器中运行查询吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2022-06-29
    • 2011-10-25
    相关资源
    最近更新 更多