2014-08-26 3 views
0

У меня есть таблица в моей базе данных MYSQL с шестнадцатеричными (значения хеш-массива md5), я выбираю значения в одном запросе Query1 по набору результатов RS1 и теперь мне нужно получить данные из другой таблицы, которая имеет это хэш-значение в ключе column..I получить SQL ошибку синтаксиса для выполнения той же:Передача шестнадцатеричного значения хэша в запрос JDBC

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

Pls помочь

ответ

0

Существует ) отсутствует в конце вашего заявления. Измените его следующим образом:

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

Помимо этой проблемы, вы не можете выполнить 'PreparedStatement' с помощью одного из методов, выполняющих которые принимают строку запроса (те только для нормального' Statement'). OP должен использовать 'executeQuery()' (без параметров) –

+0

) была опечаткой, исправлена ​​it.thanks То же самое для метода executeQuery(), но вернемся к вопросу: как передать шестнадцатеричное значение хеша в моем запросе – user2176576

+0

@ user2176576 это строка, поэтому вы можете использовать ее как есть. – Jens

Смежные вопросы