У меня есть таблица в моей базе данных 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 помочь
Помимо этой проблемы, вы не можете выполнить 'PreparedStatement' с помощью одного из методов, выполняющих которые принимают строку запроса (те только для нормального' Statement'). OP должен использовать 'executeQuery()' (без параметров) –
) была опечаткой, исправлена it.thanks То же самое для метода executeQuery(), но вернемся к вопросу: как передать шестнадцатеричное значение хеша в моем запросе – user2176576
@ user2176576 это строка, поэтому вы можете использовать ее как есть. – Jens