Создание запросов SQL с кодами символов UNICODE или ASCII - PullRequest
0 голосов
/ 24 сентября 2018

Я хотел бы создать запрос SQL, содержащий в себе коды символов ASCII или UNICODE.Например, код символа ASCII для одинарных кавычек (') равен 39, а код Unicode - U+0027.В Java я хотел бы написать запрос, заменив отдельные коды их символьными кодами:

ASCII:

connection.createStatement().executeQuery("select * from users where name =39test39")

Юникод:

connection.createStatement().executeQuery("select * from users where name =U+0027testU+0027")

Всеэти запросы должны быть эквивалентны "select * from users where name ='test'"

Когда я запускаю приведенные выше коды, СУБД (я пробовал с Mysql и SQLite) не распознает коды ascii и unicode как одну кавычку.

Итак, я знаю, что параметризованные запросы являются идеальными.Но здесь, в данном случае, я хотел, чтобы, когда SQL-код анализировался СУБД, СУБД должна распознавать символ Unicode.Например, если я использую \ u0027, JVM распознает это как одинарную кавычку, но я хочу, чтобы JVM не распознала, а DMBS распознала кодировку символов.

Есть ли способ использовать коды символов вместосам персонаж?

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

Нет, ты не хочешь этого делать.Вы должны делать

PreparedStatement ps = conn.prepareStatement("select * from users where name = ?");
ps.setString(1, "test");
ResultSet rs = ps.executeQuery();

Помните, что все строки в Java являются строками Unicode, поэтому вы предлагаете начать отправку строковых значений в виде потоков байтов в драйвер JDBC, что может быть грязно и подвержено ошибкам(если это вообще возможно).

0 голосов
/ 24 сентября 2018

Ваш запрос должен выглядеть следующим образом:

"select * from users where name =" + Character.toString((char)39) + "test" + Character.toString((char)39) + "\""
0 голосов
/ 24 сентября 2018

Когда вы помещаете числа ascii / unicode в двойные кавычки, они не разрешаются в символы, вместо этого попробуйте что-то вроде:

"select * from users where name =" + Character.toString(Character.toChar(yourIntHere)) + ...

И тогда это должно создать искомую строку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...