Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вставка рисунков в MS SQL Server / 10 сообщений из 10, страница 1 из 1
06.04.2007, 10:41
    #34442551
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка рисунков в MS SQL Server
Привет всем.
Для использования рисунков в базе
Код: plaintext
1.
Array2Picture(aBytes() As Byte) As StdPicture
Picture2Array(ByVal oObj As StdPicture, aBytes() As Byte)
Все нормально пашет, только добавление рисунков в базу у меня медленно работает, секунд 5-8
рисунки объемом 70кб
Параметры компа нормальные, ожидается что прога будет работать и на слабых компах.
Вот так я добавляю в базу:
Код: plaintext
1.
2.
3.
4.
    Dim ArrPicturesBytes() As Byte
    Picture2Array Image1.Picture, ArrPicturesBytes()
    rstPictures.Fields("Picture").AppendChunk ArrPicturesBytes
    rstPictures.Update
Тип поля с рисунком Image в MS SQL Server, сам сервер MSDE
Есть ли способ получше чем у меня? Через запросы :) или другой метод, более эффективный?
Спасибо всем.
...
Рейтинг: 0 / 0
06.04.2007, 11:05
    #34442661
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка рисунков в MS SQL Server
Посмотрите вот это .
...
Рейтинг: 0 / 0
06.04.2007, 11:26
    #34442751
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка рисунков в MS SQL Server
да врожде все у тебя правильно. Попробуй определиться где тормоза - в какой из трех строчек тормозит:
Код: plaintext
1.
2.
    Picture2Array Image1.Picture, ArrPicturesBytes()
    rstPictures.Fields("Picture").AppendChunk ArrPicturesBytes
    rstPictures.Update

может тормозить по разным причинам - Picture2Array, но это маловероятно.
Может тормозить AppendChunk - из-за тормозов самого рекордсета
а может тормозить Update - из-за тормозов базы данных.
Соответственно способы борьбы будут разными.
...
Рейтинг: 0 / 0
06.04.2007, 11:39
    #34442823
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка рисунков в MS SQL Server
orunbekЕсть ли способ получше чем у меня?

В принципе-то все правильно, правда неизвестно как работает твоя Picture2Array.
То бишь в каком формате помещает картинку в массив. Может в BMP - посмотри первые байтики массива на предмет формата, а то может получиться что ты грузишь в базу значительно больший объем чем изначальная картинка.

Вообще, если нет необходимости лучше не издеваться над форматами картинок и писать в базу содержимое оригинального файла. Ты же, грубо говоря, грузишь из файла в Picture (JPG->BMP), потом выгружаешь в массив (BMP->???) и потом пишешь в базу. Качество при переконвертаци JPG теряется...

И я тут приложил заодно примерчик с несколькими функциями на основе GDI+ - там есть и аналоги твоих, с возможностью сохранения так же и в JPG...
...
Рейтинг: 0 / 0
06.04.2007, 12:43
    #34443141
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка рисунков в MS SQL Server
Hibernateможет тормозить по разным причинам - Picture2Array, но это маловероятно.Ага, я такими пользовался.
HibernateМожет тормозить AppendChunk - из-за тормозов самого рекордсетаМожно попробовать просто присвоить значение - rstPictures!Picture = ArrPicturesBytes.
Hibernateа может тормозить Update - из-за тормозов базы данных.Скорее из-за параметров соединения и открытия рекордсета.
AndrFпотом выгружаешь в массив (BMP->???) BMP->BMP, уточняю :)
...
Рейтинг: 0 / 0
07.04.2007, 19:15
    #34445338
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка рисунков в MS SQL Server
Извиняюсь, что долго не проявлял признаков жизни ;)
recordset открывается обычным методом adOpenKeyset,adLockOptimistic
зависания на точке Update
Какие могут быть советы? При данном методе?
Или лучше всего при сохранении грузить в базу из файла, а не из массива?
...
Рейтинг: 0 / 0
08.04.2007, 00:53
    #34445530
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка рисунков в MS SQL Server
orunbekКакие могут быть советы? При данном методе?

1. C базой работаешь через OLEDB или ODBC?

2. Размер массива какой?

orunbekИли лучше всего при сохранении грузить в базу из файла, а не из массива?

Считывай файл в массив и сохраняй. Иначе как еще ты его сохранишь?

P.S
В давние-давние времена, лет так 6..8 назад, у меня была программка, которая сохраняла в MDB-шку файлы. На больших файлах (несколько мегабайт) она дико тормозила. При разборке выяснилось что тормоза были из-за того что пытался сохранить массив одним вызовом AppendChunk, после сохранения блоками по 32K - тормоза пропали.
...
Рейтинг: 0 / 0
08.04.2007, 05:11
    #34445575
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка рисунков в MS SQL Server
к базе через ADO
гы ;) у меня точно так, в смысле одним Append
теперь поправлю, понятно из-за чего
спасибо большое
...
Рейтинг: 0 / 0
09.04.2007, 12:14
    #34446952
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка рисунков в MS SQL Server
orunbekк базе через ADO

Через ADO можно пользовать как ODBC так и OLEDB... ;)

orunbekгы ;) у меня точно так, в смысле одним Append
теперь поправлю, понятно из-за чего спасибо большое

Это было давно и с MDB. Не факт что так-же с MS SQL. Сейчас у меня файлы в несколько мегабайт закидываются мгновенно. Ну а больше мне и не надо...

P.S
Я все же посмотрел бы на размер массива который кидается в базу и формат файла в нем - похоже твой JPG в 70 Kb преобразуется в BMP-шку значительно большего размера... Нафига базу раздувать и трафик грузить-то?
...
Рейтинг: 0 / 0
09.05.2007, 14:06
    #34514554
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка рисунков в MS SQL Server
ок, спасибо
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вставка рисунков в MS SQL Server / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]