В этом случае string &filename
означает, что функция будет получать ссылку (адрес памяти) в качестве параметра вместо того, чтобы принимать ее как копию.
Преимущество этого метода заключается в том, что ваша функция не будет выделять больше места в стеке, чтобы сохранить данные, содержащиеся в filename .
Вы должны по крайней мере избежать одиночной кавычки. Насколько я знаю, "\" обратная косая черта не нуждается в экранировании.
Проблема заключается в одинарных кавычках, crate.io использует их для явного обозначения значения столбца, как упомянуто здесь
SELECT "field" FROM "doc"."test" where field = '''dhruv\' limit 100;
Выше будет возвращен результат (пример того, что я запускаю на моей локальной машине).
Таким образом, ваш запрос должен выглядеть следующим образом (обратите внимание на правильное завершение одной кавычкой):
String query = "select * from test where col1='''dhruv\'";
ОБНОВЛЕНИЕ:
Тогда я бы предложил, если вам придется сделать это таким образом, экранировать только переменную "escapedValue" и добавить ее
String query = "select * from test where col1=" + "'" + escapedValue + "'";