Hi all. Есть прога на джаве которая общается с БД через jdbc. В базе есть поле типа double, и в программе есть переменная типа double, хочу туда сюда данные пересылать.
В методе executeQuery(string) на вход нужна строка, в prepareStatement запрос тоже задаётся строкой а потом добавляется с помошью различных set-ов. Дык вопрос как быть уверенным что информация уйдёт в базу в бинарном виде без двойного преобразования — в текст и обратно?
Re: как переслать double через jdbc в бинарном виде?
Здравствуйте, Аноним, Вы писали:
А>В методе executeQuery(string) на вход нужна строка, в prepareStatement запрос тоже задаётся строкой а потом добавляется с помошью различных set-ов. Дык вопрос как быть уверенным что информация уйдёт в базу в бинарном виде без двойного преобразования — в текст и обратно?
если для запроса с таким куском (а именно так правильно подставлять параметры, как минимум, во избежание sql-injection):
where your_table.your_double_field < ?
вызывается
statement.setDouble(1, yourDoubleValue);
то передача текстом или бинарно зависит только от того, как организован протокол взаимодействия клиента и сервера конкретной СУБД. т.е. можно взять исходники (или дизассемблировать классы) jdbc-драйвера и посмотреть, что же именно и в каком виде пишется при передаче данных на сервер (в tcp-поток)
Re: как переслать double через jdbc в бинарном виде?
Здравствуйте, Аноним, Вы писали:
А>Hi all. Есть прога на джаве которая общается с БД через jdbc. В базе есть поле типа double, и в программе есть переменная типа double, хочу туда сюда данные пересылать.
А>В методе executeQuery(string) на вход нужна строка, в prepareStatement запрос тоже задаётся строкой а потом добавляется с помошью различных set-ов. Дык вопрос как быть уверенным что информация уйдёт в базу в бинарном виде без двойного преобразования — в текст и обратно?
см. binary
silence in quite
Re[2]: как переслать double через jdbc в бинарном виде?
Здравствуйте, C0s, Вы писали:
C0s>Здравствуйте, Аноним, Вы писали:
А>>В методе executeQuery(string) на вход нужна строка, в prepareStatement запрос тоже задаётся строкой а потом добавляется с помошью различных set-ов. Дык вопрос как быть уверенным что информация уйдёт в базу в бинарном виде без двойного преобразования — в текст и обратно?
C0s>если для запроса с таким куском (а именно так правильно подставлять параметры, как минимум, во избежание sql-injection): C0s>
where your_table.your_double_field < ?
C0s>вызывается
statement.setDouble(1, yourDoubleValue);
C0s>то передача текстом или бинарно зависит только от того, как организован протокол взаимодействия клиента и сервера конкретной СУБД. т.е. можно взять исходники (или дизассемблировать классы) jdbc-драйвера и посмотреть, что же именно и в каком виде пишется при передаче данных на сервер (в tcp-поток)
Спасибо, а без копания в исходниках — ни как? в документации к дровам этот вопрос ни как не освещён, для справки субд — PostgreSQL
Re[2]: как переслать double через jdbc в бинарном виде?
Здравствуйте, alex_ez, Вы писали:
_>Здравствуйте, Аноним, Вы писали:
А>>Hi all. Есть прога на джаве которая общается с БД через jdbc. В базе есть поле типа double, и в программе есть переменная типа double, хочу туда сюда данные пересылать.
А>>В методе executeQuery(string) на вход нужна строка, в prepareStatement запрос тоже задаётся строкой а потом добавляется с помошью различных set-ов. Дык вопрос как быть уверенным что информация уйдёт в базу в бинарном виде без двойного преобразования — в текст и обратно?
_>см. binary
К сожелению не понял, если не трудно можно ответ по развёрнутей?
Re[3]: как переслать double через jdbc в бинарном виде?
Здравствуйте, stuav, Вы писали:
S>Спасибо, а без копания в исходниках — ни как?
А почему нельзя просто положиться на разработчиков драйвера?
S>в документации к дровам этот вопрос ни как не освещён, для справки субд — PostgreSQL
Для справки JDBC драйвер для PostgreSQL он не один: