как записать blob в таблицу из файла с помощью jdbc?
От:
Аноним
Дата:
28.07.03 12:45
Оценка:
Имеется таблица (можно считать, что пустая), состоящая из двух полей — id INTEGER, data BLOB. Нужно через jdbc записать в эту таблицу содержимое некоторого файла. Как это сделать?
Все примеры, которые я видел в документации, были такого типа: читается blob из одной таблицы, потом записывается в другую таблицу. А в данном случае нужно создать blob "из ничего", т.е. из файла.
Re: как записать blob в таблицу из файла с помощью jdbc?
Здравствуйте, Аноним, Вы писали:
А>Имеется таблица (можно считать, что пустая), состоящая из двух полей — id INTEGER, data BLOB. Нужно через jdbc записать в эту таблицу содержимое некоторого файла. Как это сделать? А>Все примеры, которые я видел в документации, были такого типа: читается blob из одной таблицы, потом записывается в другую таблицу. А в данном случае нужно создать blob "из ничего", т.е. из файла.
База?
Re[2]: как записать blob в таблицу из файла с помощью jdbc?
Здравствуйте, Karimchik, Вы писали:
K>Здравствуйте, Аноним, Вы писали:
А>>Имеется таблица (можно считать, что пустая), состоящая из двух полей — id INTEGER, data BLOB. Нужно через jdbc записать в эту таблицу содержимое некоторого файла. Как это сделать? А>>Все примеры, которые я видел в документации, были такого типа: читается blob из одной таблицы, потом записывается в другую таблицу. А в данном случае нужно создать blob "из ничего", т.е. из файла.
Интерфейс ResultSet, которым ты пользуешься для работы с текущей записью таблицы позволяет получать укзатель на InputStream интерфейсы для чтения blob данных для конкретного поля. Методы — getBinaryStream, getAsciiStream.
Для записи blob данных для конкретного поля тебе нужно использовать методы updateAsciiStream, updateBinaryStream, через которые ты передаешь указатель на InputStream интерфейс из которого ResultSet прочитает данные при выполнении методов updateRow или insertRow.
Соотвественно для файла нужно создать объект класса FileInputStream и передавайть его в качестве параметра в вышеуказанные методы.
Вроде так должно быть.
С уважением.
Игорь.
... << RSDN@Home 1.1 beta 1 >>
"СССР — четыре слова и все лживые" — Вагрич Бахчанян
Re[3]: как записать blob в таблицу из файла с помощью jdbc?
Здравствуйте, Igor.K, Вы писали:
IK>Интерфейс ResultSet, которым ты пользуешься для работы с текущей записью таблицы позволяет получать укзатель на InputStream интерфейсы для чтения blob данных для конкретного поля. Методы — getBinaryStream, getAsciiStream. IK>Для записи blob данных для конкретного поля тебе нужно использовать методы updateAsciiStream, updateBinaryStream, через которые ты передаешь указатель на InputStream интерфейс из которого ResultSet прочитает данные при выполнении методов updateRow или insertRow. IK>Соотвественно для файла нужно создать объект класса FileInputStream и передавайть его в качестве параметра в вышеуказанные методы.
IK>Вроде так должно быть.
Все это конечно замечательно, и с т.з. теории верно, но опять таки все зависит от базы .
Для MySQL работа с BLOB это ничто иное как работа с массивом байт, т.е. метод setBinaryStream(int parameterIndex, java.io.InputStream x, int length) абсолютно эквивалентен методу ps.setBytes(int parameterIndex, byte[] x).
А вот например для Oracle...- тама нуна использовать т.н. BLOB Locator. Вот например слегка адаптированный пример из жизни:
Здравствуйте, Karimchik, Вы писали:
K>Все это конечно замечательно, и с т.з. теории верно, но опять таки все зависит от базы .
Так про базу никакую конкретно и не спрашивали.
Игорь.
... << RSDN@Home 1.1 beta 1 >>
"СССР — четыре слова и все лживые" — Вагрич Бахчанян
Re: как записать blob в таблицу из файла с помощью jdbc?
Здравствуйте, Аноним, Вы писали:
А>Имеется таблица (можно считать, что пустая), состоящая из двух полей — id INTEGER, data BLOB. Нужно через jdbc записать в эту таблицу содержимое некоторого файла. Как это сделать? А>Все примеры, которые я видел в документации, были такого типа: читается blob из одной таблицы, потом записывается в другую таблицу. А в данном случае нужно создать blob "из ничего", т.е. из файла.
Есть похожая проблема. Только BLOB надо сотворить из BitSet. blob — кажется, абстрактный класс. Что делать — вообще не знаю.
Или набор битов лучше хранить как-нибудь ещё?
Re[2]: как записать blob в таблицу из файла с помощью jdbc?
Здравствуйте, and_hom, Вы писали:
_>Есть похожая проблема. Только BLOB надо сотворить из BitSet. blob — кажется, абстрактный класс. Что делать — вообще не знаю. _>Или набор битов лучше хранить как-нибудь ещё?
например, в NUMBER, если разрядов хватит, или в строку перевести — "0101011".
Re[3]: как записать blob в таблицу из файла с помощью jdbc?
Здравствуйте, fessa, Вы писали:
F>Здравствуйте, and_hom, Вы писали:
_>>Есть похожая проблема. Только BLOB надо сотворить из BitSet. blob — кажется, абстрактный класс. Что делать — вообще не знаю. _>>Или набор битов лучше хранить как-нибудь ещё?
F>например, в NUMBER, если разрядов хватит, или в строку перевести — "0101011".
10-20 тысяч битов — никакого number не хватит.
А можно как-нибудь int[] хранить в MySQL? (оффтоп, конечно, дико извиняюсь)
А что быстрее работать будет? Через строку или blob? (подсознательно чувствую, что последнее)
Re[4]: как записать blob в таблицу из файла с помощью jdbc?
Здравствуйте, and_hom, Вы писали:
_>10-20 тысяч битов — никакого number не хватит. _>А можно как-нибудь int[] хранить в MySQL? (оффтоп, конечно, дико извиняюсь) _>А что быстрее работать будет? Через строку или blob? (подсознательно чувствую, что последнее)
Если память не подводит, в MySQL есть разные по размеру типы blob — выбрать подходящий и использовать.
Что быстрее — не знаю/не помню скорее блоб будет в даном случае, меньше памяти будет использовать.