Слияние кода завершено, страница обновится автоматически
Предварительные условия: При печати SQL запроса, jboot использует циклическую замену параметров для замены первого знака вопроса в SQL запросе. Исходный код представлен ниже:
Встречающаяся проблема: Когда значение параметра само содержит знак вопроса (например, в URL есть знак вопроса), это приводит к ошибке при замене. Например, мой SQL запрос и переданные параметры выглядят следующим образом:
UPDATE T_PMC_HOT_EVENT SET URL = ?, NUM = ? WHERE TITLE = ?
-- Переданные параметры: ["http://www.baidu.com?q=xxx&name==xx", OnClickListener.CLICK, "Это тестовый title"]
Ожидаемый результат должен был быть таким:
UPDATE T_PMC_HOT_EVENT SET URL = 'http://www.baidu.com?q=xxx&name==xx', NUM = OnClickListener.CLICK WHERE TITLE = 'Это тестовый title'
Однако фактический результат отличается: он заменил знак вопроса в URL и привёл к неправильной замене последующих позиционных маркеров:
UPDATE T_PMC_HOT_EVENT SET URL = 'http://www.baidu.comOnClickListener.CLICKq=xxx&name==xx', NUM = 'Это тестовый title' WHERE TITLE = ?
На данный момент эта проблема затрагивает классы SqlDebugger и io.jboot.db.model.Util.